{"version":3,"file":"static/js/main.9e658563.js","mappings":"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O,OACP,IAAO,WACP,IAAO,MACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,SACP,IAAO,iBACP,IAAO,iBACP,IAAO,KACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,IACP,IAAO,OACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,IACP,IAAO,SACP,IAAO,MACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,KACP,IAAO,IACP,IAAO,gBACP,IAAO,SACP,IAAO,MACP,IAAO,SACP,IAAO,OACP,IAAO,eACP,IAAO,MACP,IAAO,IACP,IAAO,UACP,IAAO,OACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,UACP,IAAO,MACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,OACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,SACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,SACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,KACP,IAAO,SACP,IAAO,IACP,IAAO,OACP,IAAO,2BACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,SACP,IAAO,KACP,IAAO,OACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,qBACP,IAAO,KACP,IAAO,SACP,IAAO,MACP,IAAO,qBACP,IAAO,SACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,eACP,IAAO,OACP,IAAO,IACP,IAAO,UACP,IAAO,SACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,SACP,IAAO,gBACP,IAAO,UACP,IAAO,sBACP,IAAO,qBACP,IAAO,SACP,IAAO,KACP,IAAO,SACP,IAAO,qBACP,IAAO,SACP,IAAO,QCpWX,SAAW3C,GACP,IAAI4C,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,MAA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,KAAKu2C,IAChBl2C,UAAYtgB,OAAOmhB,OAAO5J,EAAS+I,WAK1C4lD,CACX,CAEA,IAUInB,GAAY,CAAEpC,SAAS,IAVC,WACxB,SAASyD,IACT,CAMA,OAJAA,EAAO9lD,UAAUqiD,QAAU,SAAUkC,EAAgBrO,EAAQoM,GAEzD,YADe,IAAXpM,IAAqBA,EAAS,CAAC,GAC5B5J,GAAOiY,EAAgBrO,EAClC,EACO4P,CACX,CAT4B,KAUYzD,SC9KpC0D,GAAa,CACb,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,2CAEAC,GAAc,CACd,CAAEC,UAAW,OAAQvsB,SAAU,yBAC/B,CAAEusB,UAAW,aAAcvsB,SAAU,+BACrC,CAAEusB,UAAW,QAASvsB,SAAU,0BAChC,CAAEusB,UAAW,QAASvsB,SAAU,0BAChC,CAAEusB,UAAW,OAAQvsB,SAAU,qCAE/BwsB,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,YACA,mBACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,eACA,cACA,cACA,UACA,YACA,aACA,eACA,mBACA,cACA,YACA,cACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,UACA,mBACA,SACA,WACA,eACA,gBACA,iBACA,iBACA,qBACA,gBACA,eACA,cACA,iBAEAC,GAAoC,WACpC,SAASA,IACT,CA0EA,OAzEAA,EAAmBC,eAAiB,WAChC,MAAO,CACHC,UAAW,CACPC,KAAMP,GACNxuB,WAAYyuB,IAGxB,EACAG,EAAmBI,SAAW,SAAU5nE,GACpC,IAAI+M,EAAOiV,KAAKylD,iBAEhB,OADazlD,KAAK6lD,eAAe96D,EAAM/M,EAE3C,EACAwnE,EAAmBK,eAAiB,SAAU96D,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AU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SA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","sources":["components/ajax/errorBoundary/index.ts","components/ajax/errorBoundary/AjaxErrorBoundary.tsx","components/assessments/driverEvaluationReport/question/answers/TextReadOnlyAnswer.tsx","components/assessments/driverEvaluationReport/question/Question.tsx","components/assessments/driverEvaluationReport/question/answers/CheckAnswer.tsx","components/assessments/driverEvaluationReport/question/answers/DateTimeAnswer.tsx","components/assessments/driverEvaluationReport/question/answers/IdentifiedTargetedCompletedSourceAnswer.tsx","components/assessments/driverEvaluationReport/question/answers/NumberAnswer.tsx","components/assessments/driverEvaluationReport/question/answers/ScoreAnswer.tsx","components/assessments/driverEvaluationReport/question/answers/TextAnswer.tsx","components/assessments/driverEvaluationReport/question/answers/MultiLineTextAnswer.tsx","components/assessments/driverEvaluationReport/question/index.ts","components/assessments/driverEvaluationReport/DriverEvaluationReport.tsx","components/assessments/driverEvaluationReport/createDynamicForm.ts","components/authentication/AuthenticationContext.tsx","components/authentication/index.ts","components/authentication/useAuthentication.ts","webpack://dte-portal/./src/components/busyIndicator/BusyIndicator.module.css?ccdc","components/busyIndicator/BusyIndicator.tsx","components/busyIndicator/index.ts","webpack://dte-portal/./src/components/errorList/ErrorList.module.css?224c","components/errorList/index.ts","components/errorList/ErrorList.tsx","components/formikBindings/CheckBox.tsx","components/formikBindings/DatePicker.tsx","components/formikBindings/DropDownList.tsx","components/formikBindings/NumericTextBox.tsx","components/formikBindings/TextBox.tsx","components/formikBindings/UnboundField.tsx","components/formikBindings/index.ts","components/forms/actionButton/ActionButton.tsx","components/forms/cancelButton/CancelButton.tsx","components/forms/cancelButton/index.ts","components/forms/displayFormGroup/DisplayFormGroup.tsx","components/forms/emptyLabel/EmptyLabel.tsx","components/forms/emptyLabel/index.ts","webpack://dte-portal/./src/components/forms/formGroup/FormGroup.module.css?88a5","components/forms/formGroup/FormGroup.tsx","webpack://dte-portal/./src/components/forms/formHeading/FormHeading.module.css?0d0e","components/forms/formHeading/FormHeading.tsx","webpack://dte-portal/./src/components/forms/formSectionHeading/FormSectionHeading.module.css?5ef5","components/forms/formSectionHeading/FormSectionHeading.tsx","components/forms/index.ts","components/forms/submitButton/SubmitButton.tsx","components/hooks/index.ts","components/hooks/useBatchDataFetcher.ts","components/hooks/useDataFetcher.ts","components/hooks/useIsFirstRender.ts","components/localGroupMembers/member/form/ProfileTab.tsx","components/localGroupMembers/member/form/AddressTab.tsx","components/localGroupMembers/member/form/GroupTab.tsx","components/localGroupMembers/member/form/modals/addLink/schema.ts","components/localGroupMembers/member/form/modals/addLink/AddLinkModal.tsx","components/localGroupMembers/member/form/modals/addLink/createGroupMemberLink.ts","components/localGroupMembers/member/form/modals/deleteLink/DeleteLinkConfirmationModal.tsx","components/localGroupMembers/member/form/modals/deleteLink/schema.ts","components/localGroupMembers/member/form/modals/deleteLink/DeleteLinkModal.tsx","components/localGroupMembers/member/form/modals/deleteLink/deleteGroupMemberLink.ts","components/localGroupMembers/member/form/LinksTab.tsx","components/localGroupMembers/member/edit/reloadLinks.ts","components/localGroupMembers/member/form/identifyChanges.ts","components/localGroupMembers/member/form/schema.ts","components/localGroupMembers/member/form/groupLinkGridToolbar.ts","components/localGroupMembers/member/form/modals/deleteGroupLink/DeleteGroupLinkModel.tsx","components/localGroupMembers/member/form/modals/deleteGroupLink/deleteGroupLink.ts","components/localGroupMembers/member/form/modals/addGroupLink/AddGroupLinkModel.tsx","components/localGroupMembers/member/form/modals/addGroupLink/addGroupLink.ts","components/localGroupMembers/member/form/GroupLinksTab.tsx","components/localGroupMembers/member/form/getLocalGroupMemberDetails.ts","components/localGroupMembers/member/form/LocalGroupMemberDetailsForm.tsx","components/localGroupMembers/member/form/index.ts","components/localGroupMembers/member/edit/updateLocalGroupMemberDetails.ts","components/localGroupMembers/member/edit/EditLocalGroupMemberDetailsPage.tsx","components/localGroupMembers/member/edit/index.ts","components/modals/waitnotification/WaitNotificationModal.tsx","components/modals/notification/NotificationModal.tsx","components/modals/raiseMemberQuery/schema.ts","components/modals/raiseMemberQuery/RaiseMemberQueryModal.tsx","components/modals/raiseMemberQuery/raiseMemberQuery.ts","components/passwordPolicy/PasswordPolicyContext.ts","components/passwordPolicy/PasswordPolicyFeedback.tsx","components/passwordPolicy/passwordPolicyValidationRules.ts","components/passwordPolicy/createPolicyRules.ts","components/passwordPolicy/PasswordPolicyProvider.tsx","components/passwordPolicy/usePasswordPolicy.ts","components/resetCurrentPassword/schema.ts","components/resetCurrentPassword/ResetCurrentPasswordPage.tsx","components/resetCurrentPassword/resetCurrentPassword.ts","components/resetCurrentPassword/index.ts","components/resetCurrentPassword/ResetCurrentPasswordPageContainer.tsx","components/routes/requireAuth/RequireAuth.tsx","components/routes/requireAuth/index.ts","components/userData/UserDataContext.tsx","components/userData/index.ts","components/userData/useUserData.ts","constants.ts","services/api.ts","utils/parseModelStateErrors.ts","services/localStorageService.ts","utils/formatName.ts","utils/isDifferent.ts","utils/makeCancelable.ts","utils/queryString.ts","utils/toSyncfusionDataSource.ts","utils/toUtcDate.ts","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@remix-run/router/router.ts","../node_modules/@syncfusion/ej2-base/src/util.js","../node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","../node_modules/@syncfusion/ej2-base/src/hijri-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","../node_modules/@syncfusion/ej2-base/src/observer.js","../node_modules/@syncfusion/ej2-base/src/internationalization.js","../node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","../node_modules/@syncfusion/ej2-base/src/ajax.js","../node_modules/@syncfusion/ej2-base/src/browser.js","../node_modules/@syncfusion/ej2-base/src/fetch.js","../node_modules/@syncfusion/ej2-base/src/event-handler.js","../node_modules/@syncfusion/ej2-base/src/dom.js","../node_modules/@syncfusion/ej2-base/src/base.js","../node_modules/@syncfusion/ej2-base/src/notify-property-change.js","../node_modules/@syncfusion/ej2-base/src/animation.js","../node_modules/@syncfusion/ej2-base/src/module-loader.js","../node_modules/@syncfusion/ej2-base/src/validate-lic.js","../node_modules/@syncfusion/ej2-base/src/child-property.js","../node_modules/@syncfusion/ej2-base/src/component.js","../node_modules/@syncfusion/ej2-base/src/draggable.js","../node_modules/@syncfusion/ej2-base/src/droppable.js","../node_modules/@syncfusion/ej2-base/src/keyboard.js","../node_modules/@syncfusion/ej2-base/src/l10n.js","../node_modules/@syncfusion/ej2-base/src/touch.js","../node_modules/@syncfusion/ej2-base/src/template.js","../node_modules/@syncfusion/ej2-base/src/template-engine.js","../node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","../node_modules/@syncfusion/ej2-buttons/src/button/button.js","../node_modules/@syncfusion/ej2-buttons/src/check-box/check-box.js","../node_modules/@syncfusion/ej2-buttons/src/common/common.js","../node_modules/@syncfusion/ej2-buttons/src/radio-button/radio-button.js","../node_modules/@syncfusion/ej2-calendars/src/calendar/calendar.js","../node_modules/@syncfusion/ej2-calendars/src/datepicker/datepicker.js","../node_modules/@syncfusion/ej2-calendars/src/timepicker/timepicker.js","../node_modules/@syncfusion/ej2-calendars/src/datetimepicker/datetimepicker.js","../node_modules/@syncfusion/ej2-data/src/adaptors.js","../node_modules/@syncfusion/ej2-data/src/manager.js","../node_modules/@syncfusion/ej2-data/src/query.js","../node_modules/@syncfusion/ej2-data/src/util.js","../node_modules/@syncfusion/ej2-dropdowns/src/common/incremental-search.js","../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-base/drop-down-base.js","../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-list/drop-down-list.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/data.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-menu-operator.js","../node_modules/@syncfusion/ej2-dropdowns/src/combo-box/combo-box.js","../node_modules/@syncfusion/ej2-dropdowns/src/common/highlight-search.js","../node_modules/@syncfusion/ej2-dropdowns/src/auto-complete/auto-complete.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/string-filter-ui.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/number-filter-ui.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/boolean-filter-ui.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/date-filter-ui.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-menu-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/checkbox-filter.js","../node_modules/@syncfusion/ej2-navigations/src/common/menu-scroll.js","../node_modules/@syncfusion/ej2-navigations/src/common/menu-base.js","../node_modules/@syncfusion/ej2-navigations/src/context-menu/context-menu.js","../node_modules/@syncfusion/ej2-grids/src/grid/common/excel-filter-base.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-filter.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/filter.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/print.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/sort.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/toolbar.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/constant.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/enum.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/group-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/content-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/stacked-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/indent-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/caption-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/expand-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-indent-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-header-indent-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-expand-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-drop-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-header-indent-render.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/render.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/cell-render-factory.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/responsive-dialog-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/service-locator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/renderer-factory.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/page-settings.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/column-chooser-settings.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/selection.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/search.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/show-hide.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/scroll.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/aggregate.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/clipboard.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/grid.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/string-literals.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/util.js","../node_modules/@syncfusion/ej2-grids/src/grid/common/checkbox-filter-base.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/column.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/row.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-merge-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/aria-service.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/focus-strategy.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/row-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/summary-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/value-formatter.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/width-controller.js","../node_modules/@syncfusion/ej2-inputs/src/input/input.js","../node_modules/@syncfusion/ej2-inputs/src/numerictextbox/numerictextbox.js","../node_modules/@syncfusion/ej2-lists/src/common/list-base.js","../node_modules/@syncfusion/ej2-navigations/src/common/h-scroll.js","../node_modules/@syncfusion/ej2-navigations/src/common/v-scroll.js","../node_modules/@syncfusion/ej2-navigations/src/toolbar/toolbar.js","../node_modules/@syncfusion/ej2-popups/src/common/collision.js","../node_modules/@syncfusion/ej2-popups/src/common/position.js","../node_modules/@syncfusion/ej2-popups/src/common/resize.js","../node_modules/@syncfusion/ej2-popups/src/dialog/dialog.js","../node_modules/@syncfusion/ej2-popups/src/popup/popup.js","../node_modules/@syncfusion/ej2-popups/src/spinner/spinner.js","../node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","../node_modules/@syncfusion/ej2-react-base/src/component-base.js","../node_modules/@syncfusion/ej2-react-base/src/util.js","../node_modules/@syncfusion/ej2-react-base/src/complex-base.js","../node_modules/@syncfusion/ej2-react-base/src/services.js","../node_modules/@syncfusion/ej2-react-base/src/template.js","../node_modules/@syncfusion/ej2-react-buttons/src/button/button.component.js","../node_modules/@syncfusion/ej2-react-buttons/src/check-box/checkbox.component.js","../node_modules/@syncfusion/ej2-react-calendars/src/datepicker/datepicker.component.js","../node_modules/@syncfusion/ej2-react-dropdowns/src/drop-down-list/dropdownlist.component.js","../node_modules/@syncfusion/ej2-react-grids/src/grid/columns-directive.js","../node_modules/@syncfusion/ej2-react-grids/src/grid/grid.component.js","../node_modules/@syncfusion/ej2-react-inputs/src/numerictextbox/numerictextbox.component.js","../node_modules/@syncfusion/ej2-inputs/src/textbox/textbox.js","../node_modules/@syncfusion/ej2-react-inputs/src/textbox/textbox.component.js","../node_modules/@syncfusion/ej2-navigations/src/tab/tab.js","../node_modules/@syncfusion/ej2-react-navigations/src/tab/tab.component.js","../node_modules/axios/index.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/defaults.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/utils.js","../node_modules/beautiful-react-hooks/esm/shared/isClient.js","../node_modules/beautiful-react-hooks/esm/shared/isAPISupported.js","../node_modules/beautiful-react-hooks/esm/shared/warnOnce.js","../node_modules/beautiful-react-hooks/esm/useMediaQuery.js","../node_modules/call-bind/callBound.js","../node_modules/call-bind/index.js","../node_modules/cookie/index.js","../node_modules/create-react-class/factory.js","../node_modules/create-react-class/index.js","../node_modules/exenv/index.js","../node_modules/deepmerge/dist/es.js","../node_modules/lodash-es/_freeGlobal.js","../node_modules/lodash-es/_root.js","../node_modules/lodash-es/_Symbol.js","../node_modules/lodash-es/_getRawTag.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_baseGetTag.js","../node_modules/lodash-es/_overArg.js","../node_modules/lodash-es/_getPrototype.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/lodash-es/isPlainObject.js","../node_modules/tiny-warning/dist/tiny-warning.esm.js","../node_modules/lodash-es/_listCacheClear.js","../node_modules/lodash-es/eq.js","../node_modules/lodash-es/_assocIndexOf.js","../node_modules/lodash-es/_listCacheDelete.js","../node_modules/lodash-es/_listCacheGet.js","../node_modules/lodash-es/_listCacheHas.js","../node_modules/lodash-es/_listCacheSet.js","../node_modules/lodash-es/_ListCache.js","../node_modules/lodash-es/_stackClear.js","../node_modules/lodash-es/_stackDelete.js","../node_modules/lodash-es/_stackGet.js","../node_modules/lodash-es/_stackHas.js","../node_modules/lodash-es/isObject.js","../node_modules/lodash-es/isFunction.js","../node_modules/lodash-es/_coreJsData.js","../node_modules/lodash-es/_isMasked.js","../node_modules/lodash-es/_toSource.js","../node_modules/lodash-es/_baseIsNative.js","../node_modules/lodash-es/_getValue.js","../node_modules/lodash-es/_getNative.js","../node_modules/lodash-es/_Map.js","../node_modules/lodash-es/_nativeCreate.js","../node_modules/lodash-es/_hashClear.js","../node_modules/lodash-es/_hashDelete.js","../node_modules/lodash-es/_hashGet.js","../node_modules/lodash-es/_hashHas.js","../node_modules/lodash-es/_hashSet.js","../node_modules/lodash-es/_Hash.js","../node_modules/lodash-es/_mapCacheClear.js","../node_modules/lodash-es/_isKeyable.js","../node_modules/lodash-es/_getMapData.js","../node_modules/lodash-es/_mapCacheDelete.js","../node_modules/lodash-es/_mapCacheGet.js","../node_modules/lodash-es/_mapCacheHas.js","../node_modules/lodash-es/_mapCacheSet.js","../node_modules/lodash-es/_MapCache.js","../node_modules/lodash-es/_stackSet.js","../node_modules/lodash-es/_Stack.js","../node_modules/lodash-es/_arrayEach.js","../node_modules/lodash-es/_defineProperty.js","../node_modules/lodash-es/_baseAssignValue.js","../node_modules/lodash-es/_assignValue.js","../node_modules/lodash-es/_copyObject.js","../node_modules/lodash-es/_baseTimes.js","../node_modules/lodash-es/_baseIsArguments.js","../node_modules/lodash-es/isArguments.js","../node_modules/lodash-es/isArray.js","../node_modules/lodash-es/stubFalse.js","../node_modules/lodash-es/isBuffer.js","../node_modules/lodash-es/_isIndex.js","../node_modules/lodash-es/isLength.js","../node_modules/lodash-es/_baseIsTypedArray.js","../node_modules/lodash-es/_baseUnary.js","../node_modules/lodash-es/_nodeUtil.js","../node_modules/lodash-es/isTypedArray.js","../node_modules/lodash-es/_arrayLikeKeys.js","../node_modules/lodash-es/_isPrototype.js","../node_modules/lodash-es/_nativeKeys.js","../node_modules/lodash-es/_baseKeys.js","../node_modules/lodash-es/isArrayLike.js","../node_modules/lodash-es/keys.js","../node_modules/lodash-es/_baseAssign.js","../node_modules/lodash-es/_nativeKeysIn.js","../node_modules/lodash-es/_baseKeysIn.js","../node_modules/lodash-es/keysIn.js","../node_modules/lodash-es/_baseAssignIn.js","../node_modules/lodash-es/_cloneBuffer.js","../node_modules/lodash-es/_copyArray.js","../node_modules/lodash-es/_arrayFilter.js","../node_modules/lodash-es/stubArray.js","../node_modules/lodash-es/_getSymbols.js","../node_modules/lodash-es/_copySymbols.js","../node_modules/lodash-es/_arrayPush.js","../node_modules/lodash-es/_getSymbolsIn.js","../node_modules/lodash-es/_copySymbolsIn.js","../node_modules/lodash-es/_baseGetAllKeys.js","../node_modules/lodash-es/_getAllKeys.js","../node_modules/lodash-es/_getAllKeysIn.js","../node_modules/lodash-es/_DataView.js","../node_modules/lodash-es/_Promise.js","../node_modules/lodash-es/_Set.js","../node_modules/lodash-es/_WeakMap.js","../node_modules/lodash-es/_getTag.js","../node_modules/lodash-es/_initCloneArray.js","../node_modules/lodash-es/_Uint8Array.js","../node_modules/lodash-es/_cloneArrayBuffer.js","../node_modules/lodash-es/_cloneDataView.js","../node_modules/lodash-es/_cloneRegExp.js","../node_modules/lodash-es/_cloneSymbol.js","../node_modules/lodash-es/_cloneTypedArray.js","../node_modules/lodash-es/_initCloneByTag.js","../node_modules/lodash-es/_baseCreate.js","../node_modules/lodash-es/_initCloneObject.js","../node_modules/lodash-es/_baseIsMap.js","../node_modules/lodash-es/isMap.js","../node_modules/lodash-es/_baseIsSet.js","../node_modules/lodash-es/isSet.js","../node_modules/lodash-es/_baseClone.js","../node_modules/lodash-es/clone.js","../node_modules/lodash-es/_arrayMap.js","../node_modules/lodash-es/isSymbol.js","../node_modules/lodash-es/memoize.js","../node_modules/lodash-es/_memoizeCapped.js","../node_modules/lodash-es/_stringToPath.js","../node_modules/lodash-es/_toKey.js","../node_modules/lodash-es/_baseToString.js","../node_modules/lodash-es/toString.js","../node_modules/lodash-es/toPath.js","../node_modules/lodash-es/cloneDeep.js","../node_modules/formik/src/FormikContext.tsx","../node_modules/formik/src/utils.ts","../node_modules/formik/src/Formik.tsx","../node_modules/formik/src/Field.tsx","../node_modules/formik/src/Form.tsx","../node_modules/formik/src/connect.tsx","../node_modules/formik/src/FieldArray.tsx","../node_modules/formik/src/ErrorMessage.tsx","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/get-intrinsic/index.js","../node_modules/has-proto/index.js","../node_modules/has-symbols/index.js","../node_modules/has-symbols/shams.js","../node_modules/has/src/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/jquery/dist/jquery.js","../node_modules/local-storage-fallback/lib/CookieStorage.js","../node_modules/local-storage-fallback/lib/MemoryStorage.js","../node_modules/local-storage-fallback/lib/index.js","../node_modules/local-storage-fallback/lib/isSupported.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_arrayEach.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_arrayReduce.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_asciiToArray.js","../node_modules/lodash/_asciiWords.js","../node_modules/lodash/_assignValue.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_baseAssign.js","../node_modules/lodash/_baseAssignIn.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_baseClone.js","../node_modules/lodash/_baseCreate.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_baseForOwn.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseHas.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_baseIsMap.js","../node_modules/lodash/_baseIsMatch.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_baseIsSet.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseIteratee.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_baseKeysIn.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/_basePropertyOf.js","../node_modules/lodash/_baseSlice.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_baseValues.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_castSlice.js","../node_modules/lodash/_cloneArrayBuffer.js","../node_modules/lodash/_cloneBuffer.js","../node_modules/lodash/_cloneDataView.js","../node_modules/lodash/_cloneRegExp.js","../node_modules/lodash/_cloneSymbol.js","../node_modules/lodash/_cloneTypedArray.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_copyObject.js","../node_modules/lodash/_copySymbols.js","../node_modules/lodash/_copySymbolsIn.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_createCaseFirst.js","../node_modules/lodash/_createCompounder.js","../node_modules/lodash/_deburrLetter.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_getAllKeysIn.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_getPrototype.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_getSymbolsIn.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/_hasUnicode.js","../node_modules/lodash/_hasUnicodeWord.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_initCloneArray.js","../node_modules/lodash/_initCloneByTag.js","../node_modules/lodash/_initCloneObject.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_iteratorToArray.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_nativeKeysIn.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_root.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_stringToArray.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_toKey.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_unicodeToArray.js","../node_modules/lodash/_unicodeWords.js","../node_modules/lodash/camelCase.js","../node_modules/lodash/capitalize.js","../node_modules/lodash/cloneDeepWith.js","../node_modules/lodash/deburr.js","../node_modules/lodash/eq.js","../node_modules/lodash/get.js","../node_modules/lodash/has.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/identity.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isMap.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isSet.js","../node_modules/lodash/isString.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/keys.js","../node_modules/lodash/keysIn.js","../node_modules/lodash/mapKeys.js","../node_modules/lodash/mapValues.js","../node_modules/lodash/memoize.js","../node_modules/lodash/property.js","../node_modules/lodash/snakeCase.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/toArray.js","../node_modules/lodash/toString.js","../node_modules/lodash/upperFirst.js","../node_modules/lodash/values.js","../node_modules/lodash/words.js","../node_modules/object-assign/index.js","../node_modules/object-inspect/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/property-expr/index.js","../node_modules/qs/lib/formats.js","../node_modules/qs/lib/index.js","../node_modules/qs/lib/parse.js","../node_modules/qs/lib/stringify.js","../node_modules/qs/lib/utils.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-fast-compare/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/react-modal/lib/components/Modal.js","../node_modules/react-modal/lib/components/ModalPortal.js","../node_modules/react-modal/lib/helpers/ariaAppHider.js","../node_modules/react-modal/lib/helpers/bodyTrap.js","../node_modules/react-modal/lib/helpers/classList.js","../node_modules/react-modal/lib/helpers/focusManager.js","../node_modules/react-modal/lib/helpers/portalOpenInstances.js","../node_modules/react-modal/lib/helpers/safeHTMLElement.js","../node_modules/react-modal/lib/helpers/scopeTab.js","../node_modules/react-modal/lib/helpers/tabbable.js","../node_modules/react-modal/lib/index.js","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/side-channel/index.js","../node_modules/synchronous-promise/index.js","../node_modules/toposort/index.js","../node_modules/warning/warning.js","../node_modules/yup/lib/Condition.js","../node_modules/yup/lib/Lazy.js","../node_modules/yup/lib/Reference.js","../node_modules/yup/lib/ValidationError.js","../node_modules/yup/lib/array.js","../node_modules/yup/lib/boolean.js","../node_modules/yup/lib/date.js","../node_modules/yup/lib/index.js","../node_modules/yup/lib/locale.js","../node_modules/yup/lib/mixed.js","../node_modules/yup/lib/number.js","../node_modules/yup/lib/object.js","../node_modules/yup/lib/setLocale.js","../node_modules/yup/lib/string.js","../node_modules/yup/lib/util/createValidation.js","../node_modules/yup/lib/util/inherits.js","../node_modules/yup/lib/util/isAbsent.js","../node_modules/yup/lib/util/isSchema.js","../node_modules/yup/lib/util/isodate.js","../node_modules/yup/lib/util/makePath.js","../node_modules/yup/lib/util/merge.js","../node_modules/yup/lib/util/printValue.js","../node_modules/yup/lib/util/reach.js","../node_modules/yup/lib/util/runValidations.js","../node_modules/yup/lib/util/sortByKeyOrder.js","../node_modules/yup/lib/util/sortFields.js","../node_modules/yup/node_modules/@babel/runtime/helpers/extends.js","../node_modules/yup/node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/yup/node_modules/@babel/runtime/helpers/interopRequireWildcard.js","../node_modules/yup/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/yup/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","global.ts","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","webpack://dte-portal/./src/components/routes/unexpectedError/UnexpectedErrorPage.module.css?ff1a","components/routes/unexpectedError/index.ts","components/routes/unexpectedError/UnexpectedErrorPage.tsx","components/errorBoundary/ErrorBoundary.tsx","components/errorBoundary/index.ts","../node_modules/jwt-decode/lib/atob.js","../node_modules/jwt-decode/lib/base64_url_decode.js","../node_modules/jwt-decode/lib/index.js","components/authentication/validateToken.ts","components/authentication/AuthenticationProvider.tsx","components/userData/UserDataProvider.tsx","webpack://dte-portal/./src/components/dataProtectionAgreement/DataProtectionAgreementDialog.module.css?7ed4","components/dataProtectionAgreement/index.ts","components/dataProtectionAgreement/DataProtectionAgreementDialog.tsx","components/login/schema.ts","components/login/attemptLogin.ts","webpack://dte-portal/./src/components/login/LoginPage.module.css?bcef","components/login/LoginPage.tsx","components/login/index.ts","components/assessments/moderator/index.ts","components/assessments/moderator/ModeratorPage.tsx","components/assessments/moderator/updateResults.ts","components/forgottenPassword/schema.ts","components/forgottenPassword/index.ts","components/forgottenPassword/ForgottenPasswordPage.tsx","components/forgottenPassword/requestPasswordReset.ts","components/resetPassword/schema.ts","components/resetPassword/ResetPasswordPage.tsx","components/resetPassword/resetPassword.ts","components/resetPassword/index.ts","components/resetPassword/ResetPasswordPageContainer.tsx","components/dashboard/containers/index.ts","components/dashboard/containers/MemberDetailFull.tsx","components/app/App.tsx","serviceWorker.ts","index.tsx"],"sourcesContent":["import AjaxErrorBoundary from './AjaxErrorBoundary';\r\n\r\nexport * from './types';\r\n\r\nexport default AjaxErrorBoundary;\r\n","import React from 'react';\r\nimport { IAjaxErrorBoundaryProps } from './types';\r\nimport BusyIndicator from '../../busyIndicator';\r\nimport ErrorList from '../../errorList';\r\n\r\nconst AjaxErrorBoundary: React.FC = ({\r\n busy,\r\n loadingText,\r\n errors,\r\n children,\r\n}) => {\r\n if (busy) {\r\n return ;\r\n }\r\n\r\n return (\r\n <>{errors.length > 0 ? : <>{children}}\r\n );\r\n};\r\n\r\nexport default AjaxErrorBoundary;\r\n","import React from 'react';\r\nimport { UnboundField } from '../../../../formikBindings';\r\nimport { IAnswerProps } from './types';\r\n\r\nexport const TextReadOnlyAnswer: React.FC = ({ name }) => (\r\n \r\n);\r\n","import React from 'react';\r\nimport { QuestionTypes } from '../../../../constants';\r\nimport {\r\n CheckAnswer,\r\n DateTimeAnswer,\r\n IdentifiedTargetedCompletedSourceAnswer,\r\n NumberAnswer,\r\n ScoreAnswer,\r\n TextAnswer,\r\n TextReadOnlyAnswer,\r\n MultiLineTextAnswer,\r\n} from './answers';\r\nimport { FormGroup } from '../../../forms';\r\nimport { IDriverEvaluationReportQuestion } from '../types';\r\nimport { useState } from 'react';\r\nimport { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\r\n\r\nconst ANSWER_COMPONENTS: { [key: number]: any } = {\r\n 0: TextReadOnlyAnswer,\r\n [QuestionTypes.Check]: CheckAnswer,\r\n [QuestionTypes.DateTime]: DateTimeAnswer,\r\n [QuestionTypes.IdentifiedTargetedCompletedSource]: IdentifiedTargetedCompletedSourceAnswer,\r\n [QuestionTypes.Number]: NumberAnswer,\r\n [QuestionTypes.Score]: ScoreAnswer,\r\n [QuestionTypes.Text]: TextAnswer,\r\n [QuestionTypes.TextReadonly]: TextReadOnlyAnswer,\r\n [QuestionTypes.TextMomo]: MultiLineTextAnswer\r\n};\r\n\r\nconst ShouldLabelBeDisplayedFor = (questionType: number) => {\r\n return questionType !== QuestionTypes.Check;\r\n};\r\n\r\nconst Question: React.FC = ({\r\n fileId,\r\n type,\r\n text,\r\n isRequired,\r\n isResultMaster,\r\n restrictions,\r\n enablestatus,\r\n needsCheckBoxToActivate\r\n}) => {\r\n const SpecificAnswer = ANSWER_COMPONENTS[type];\r\n\r\n const [enabled, setEnabled] = useState(false);\r\n\r\n return (\r\n \r\n {needsCheckBoxToActivate ? (\r\n
\r\n
\r\n {\r\n if (typeof (e) !== 'undefined') {\r\n setEnabled(e.checked ?? enabled);\r\n }\r\n }}\r\n />\r\n
\r\n \r\n
\r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Question;\r\n","import React from 'react';\r\nimport { CheckBox } from '../../../../formikBindings';\r\nimport { ICheckAnswerProps } from './types';\r\n\r\nexport const CheckAnswer: React.FC = ({ name, label, enablestatus }) => (\r\n \r\n);\r\n","import React from 'react';\r\nimport { DatePicker } from '../../../../formikBindings';\r\nimport { IAnswerProps } from './types';\r\n\r\nexport const DateTimeAnswer: React.FC = ({ name, enablestatus }) => (\r\n \r\n);\r\n","import React from 'react';\r\nimport { DropDownList } from '../../../../formikBindings';\r\nimport { IAnswerProps } from './types';\r\n\r\nexport const IdentifiedTargetedCompletedSourceAnswer: React.FC = ({\r\n name, enablestatus\r\n}) => ;\r\n","import React from 'react';\r\nimport { NumericTextBox } from '../../../../formikBindings';\r\nimport { IAnswerProps } from './types';\r\n\r\nexport const NumberAnswer: React.FC = ({ name, enablestatus }) => (\r\n \r\n);\r\n","import React from 'react';\r\nimport { DropDownList } from '../../../../formikBindings';\r\nimport { IAnswerProps } from './types';\r\n\r\nexport const ScoreAnswer: React.FC = ({ name, enablestatus }) => (\r\n \r\n);\r\n","import React, { useMemo } from 'react';\r\nimport { ITextAnswerProps } from './types';\r\nimport { TextBox, DropDownList } from '../../../../formikBindings';\r\nimport toSyncfusionDataSource from '../../../../../utils/toSyncfusionDataSource';\r\n\r\nexport const TextAnswer: React.FC = ({\r\n name,\r\n restrictions,\r\n enablestatus\r\n}) => {\r\n const memoizedDataSource = useMemo(() => {\r\n return restrictions ? toSyncfusionDataSource(restrictions) : [];\r\n }, [restrictions]);\r\n\r\n return (\r\n <>\r\n {restrictions?.length ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { IAnswerProps } from './types';\r\nimport { MultilineTextBox } from '../../../../formikBindings';\r\n\r\nexport const MultiLineTextAnswer: React.FC = ({\r\n name,\r\n enablestatus\r\n}) => {\r\n\r\n return (\r\n <>\r\n \r\n \r\n );\r\n};\r\n","import Question from './Question';\r\n\r\nexport default Question;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { IDriverEvaluationReportProps, IDynamicForm, Answer } from './types';\r\nimport { Formik, Form } from 'formik';\r\nimport { FormSectionHeading, ActionButton } from '../../forms';\r\nimport Question from './question';\r\nimport { ButtonComponent } from '@syncfusion/ej2-react-buttons';\r\nimport createDynamicForm from './createDynamicForm';\r\nimport { QuestionTypes } from '../../../constants';\r\nimport toUtcDate from '../../../utils/toUtcDate';\r\n\r\nconst DriverEvaluationReport: React.FC = ({\r\n busy,\r\n isAssessor,\r\n attendanceConfirmed,\r\n resultsSubmitted,\r\n groups,\r\n pdfUrl,\r\n requiresAttention,\r\n onReportUpdated\r\n}) => {\r\n const [dynamicForm, setDynamicForm] = useState();\r\n\r\n useEffect(() => {\r\n if (groups) {\r\n setDynamicForm(createDynamicForm(groups));\r\n }\r\n }, [groups]);\r\n\r\n const handleUpdateResults = (values: any, complete: boolean): void => {\r\n if (!dynamicForm?.fieldMappings) return;\r\n\r\n const results: Array = [];\r\n\r\n Object.keys(values).forEach(key => {\r\n const questionFileId: number = Number.parseInt(key);\r\n const fieldMapping = dynamicForm.fieldMappings[questionFileId];\r\n\r\n const result: Answer = { fileId: questionFileId, answer: null, fieldtype: fieldMapping.type};\r\n\r\n if (values[questionFileId] !== null) {\r\n switch (fieldMapping.type) {\r\n case QuestionTypes.DateTime:\r\n result.answer =\r\n values[key] instanceof Date\r\n ? toUtcDate(values[key]).toISOString()\r\n : values[key];\r\n break;\r\n\r\n case QuestionTypes.Check:\r\n result.answer = values[key] ? '1' : '0';\r\n break;\r\n\r\n default:\r\n result.answer = values[key].toString();\r\n }\r\n }\r\n\r\n results.push(result);\r\n });\r\n\r\n onReportUpdated(results, complete);\r\n };\r\n\r\n return (\r\n <>\r\n {dynamicForm?.initialValues && (\r\n handleUpdateResults(values, true)}\r\n >\r\n {({ values }) => (\r\n
\r\n \r\n {groups.map(group => (\r\n
\r\n {group.heading}\r\n {group.questions.map(question => (\r\n \r\n ))}\r\n
\r\n ))}\r\n \r\n {attendanceConfirmed && (\r\n
\r\n {pdfUrl && (\r\n window.open(pdfUrl, '_blank')}\r\n >\r\n Show PDF\r\n \r\n )}\r\n {isAssessor && !resultsSubmitted && !requiresAttention && (\r\n <>\r\n handleUpdateResults(values, false)}\r\n >\r\n Update Results\r\n \r\n \r\n Submit Results\r\n \r\n \r\n )}\r\n
\r\n )}\r\n {!attendanceConfirmed &&

Attendance has not been confirmed

}\r\n {resultsSubmitted &&

This report has been submitted

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

Add Group Member Link

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

Member Group Link

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

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

\r\n {/* 45861 - TO - 19/09/2024 */}\r\n

\r\n If removing a Group Official Role, please click \"No\" and go to the Committee Group Change and submit the form.\r\n If removing a member, please click \"Yes\" and continue.\r\n

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

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

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

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

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

Group Member Deletion

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

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

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

{message}

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

{message}

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

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

\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {\r\n validate(event?.value ?? '');\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n
\r\n {passwordResetRequired && (\r\n \r\n Cancel\r\n \r\n )}\r\n \r\n Reset Password\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n )}\r\n \r\n
\r\n {showModal && (\r\n {\r\n if (passwordResetRequired) {\r\n onLogout();\r\n } else {\r\n navigate('/', { replace: true });\r\n }\r\n }}\r\n />\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ResetCurrentPasswordPage;\r\n","import { AxiosPromise } from 'axios';\r\nimport { IResetCurrentPasswordCommand } from './types';\r\nimport { instance } from '../../services/api';\r\n\r\nexport default (data: IResetCurrentPasswordCommand): AxiosPromise =>\r\n instance.post(`api/accounts/resetCurrent`, data);\r\n","import ResetCurrentPasswordPage from './ResetCurrentPasswordPageContainer';\r\n\r\nexport default ResetCurrentPasswordPage;\r\n","import React from 'react';\r\nimport PasswordPolicyProvider from '../passwordPolicy/PasswordPolicyProvider';\r\nimport ResetCurrentPasswordPage from './ResetCurrentPasswordPage';\r\n\r\nconst ResetCurrentPasswordPageContainer: React.FC = () => (\r\n \r\n \r\n
\r\n);\r\n\r\nexport default ResetCurrentPasswordPageContainer;\r\n","import React from 'react';\r\nimport { Navigate, RouteProps } from 'react-router-dom';\r\nimport useAuthentication from '../../authentication';\r\n\r\nconst RequireAuth: React.FC = ({\r\n children\r\n}) => {\r\n const { isAuthenticated, passwordResetRequired } = useAuthentication();\r\n\r\n return (\r\n <>\r\n {isAuthenticated ? (\r\n <>\r\n {passwordResetRequired ? (\r\n \r\n ) : (\r\n <>{children}\r\n )}\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default RequireAuth;\r\n","import RequireAuth from './RequireAuth';\r\n\r\nexport default RequireAuth;\r\n","import { createContext } from 'react';\r\nimport { IUserDataContext } from './types';\r\n\r\nconst UserDataContext = createContext(undefined);\r\n\r\nexport default UserDataContext;\r\n","import useUserData from './useUserData';\r\n\r\nexport default useUserData;\r\n","import { useContext } from 'react';\r\nimport { IUserDataContext } from './types';\r\nimport UserDataContext from './UserDataContext';\r\n\r\nconst useUserData = (): IUserDataContext => {\r\n const context = useContext(UserDataContext);\r\n\r\n if (!context) {\r\n throw new Error('This component must be a component');\r\n }\r\n\r\n return context;\r\n};\r\n\r\nexport default useUserData;\r\n","export const UserRoles = Object.freeze({\r\n All: '0',\r\n LocalGroupUser: '1',\r\n ShowDiary: '2',\r\n EditAssessments: '3',\r\n ShowExpenses: '5',\r\n ListCourses: '6',\r\n WebAdmin: '7',\r\n ManageEquipment: '9', // EU1833 - TO - 27/09/2022\r\n LocalGroupLinkMaintenance: '10' // EU2676 - TO - 17/10/2022\r\n});\r\n\r\nexport const QuestionTypes = Object.freeze({\r\n Check: 7991,\r\n DateTime: 7993,\r\n IdentifiedTargetedCompletedSource: 7994,\r\n Number: 7997,\r\n Score: 7996,\r\n Text: 7992,\r\n TextReadonly: 7995,\r\n TextMomo: 66397 \r\n});\r\n\r\n// EU1833 - TO - 28/09/2022\r\nexport const EquipmentHQFileId = 30012593;\r\n\r\n// EU2726 - TO - 15/11/2022\r\nexport const PortalIssuesFormLink = 'https://www.iamroadsmart.com/darts-portal-updates/darts-issue-form'\r\n","import axios from 'axios';\r\nimport parseModelStateErrors from '../utils/parseModelStateErrors';\r\nimport localStorageService from './localStorageService';\r\n\r\nconst instance = axios.create();\r\n\r\ninstance.defaults.headers.common.Accept = 'application/json';\r\ninstance.defaults.headers.common['Content-Type'] = 'application/json';\r\n\r\ninstance.interceptors.request.use(function (config) {\r\n const authToken = localStorageService.getAuthToken();\r\n if (authToken) config.headers.Authorization = `Bearer ${authToken}`;\r\n\r\n const accessToken = localStorageService.getAccessToken();\r\n if (accessToken) config.headers['x-auth'] = accessToken;\r\n\r\n return config;\r\n},\r\n function (error) {\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\ninstance.interceptors.response.use(\r\n function (response) {\r\n return response;\r\n },\r\n function (error) {\r\n if (error.isCanceled) {\r\n return Promise.reject(error);\r\n }\r\n else if (error.response) {\r\n // The request was made and the server responded with a status code\r\n // that falls out of the range of 2xx\r\n\r\n if (error.response.status === 500) {\r\n return Promise.reject([\r\n 'An unexpected error has occurred, if the problem persists please contact your system administrator.',\r\n ]);\r\n }\r\n\r\n if (error.response.status === 401) {\r\n\r\n if (error.response.headers['www-authenticate'] && error.response.headers['www-authenticate'].includes('Bearer error=\"invalid_token\"')) {\r\n localStorageService.clear();\r\n window.location.href = window.origin;\r\n return Promise.reject(['Your login has expired, please wait while you are redirected back to the login page...']);\r\n }\r\n\r\n return Promise.reject([\r\n 'You do not have permission to access the requested resource.',\r\n ]);\r\n\r\n }\r\n\r\n const { errorNumber } = error.response.data;\r\n\r\n // expired/invalid token\r\n if (errorNumber === 102 || errorNumber === 103) {\r\n localStorageService.clear();\r\n window.location.href = window.origin;\r\n return Promise.reject([\r\n 'Your login has expired, please wait while you are redirected back to the login page...',\r\n ]);\r\n }\r\n\r\n return Promise.reject(parseModelStateErrors(error.response.data));\r\n } else if (error.request) {\r\n // The request was made but no response was received\r\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\r\n // http.ClientRequest in node.js\r\n return Promise.reject([\r\n 'The server could not be reached, please try again later.',\r\n ]);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n return Promise.reject(['Invalid request']);\r\n }\r\n },\r\n);\r\n\r\nexport { instance };\r\n","export default function parseModelStateErrors(data: any): Array {\r\n const { errors } = data;\r\n let results: Array = [];\r\n\r\n if (!errors) {\r\n return ['An unexpected error has occurred'];\r\n }\r\n\r\n Object.keys(errors).forEach(key => (results = [...results, ...errors[key]]));\r\n\r\n return results;\r\n}\r\n","import storage from 'local-storage-fallback';\r\nimport { IDevice } from '../components/deviceSettings/form';\r\n\r\nconst AuthTokenKey = 'auth_token';\r\nconst AccessTokenKey = 'access_token';\r\nconst Device = 'device';\r\n// TO - 22/08/2023\r\nconst SelectedContact = 'selected_contact';\r\nconst SelectedOrg = 'selected_org';\r\n\r\nexport default {\r\n getAuthToken: () => storage.getItem(AuthTokenKey),\r\n getAccessToken: () => storage.getItem(AccessTokenKey),\r\n getDevice: (): IDevice | null => {\r\n const device = storage.getItem(Device);\r\n\r\n if (device === null) {\r\n return null;\r\n }\r\n\r\n return JSON.parse(device);\r\n },\r\n setTokens: (authToken: string, accessToken: string) => {\r\n storage.setItem(AuthTokenKey, authToken);\r\n storage.setItem(AccessTokenKey, accessToken);\r\n },\r\n setDevice: (device: IDevice): void => {\r\n storage.setItem(Device, JSON.stringify(device));\r\n },\r\n clearDevice: () => storage.removeItem(Device),\r\n clear: () => {\r\n storage.removeItem(AuthTokenKey);\r\n storage.removeItem(AccessTokenKey);\r\n storage.removeItem(Device);\r\n // TO - 22/08/2023\r\n storage.removeItem(SelectedContact);\r\n storage.removeItem(SelectedOrg);\r\n },\r\n // TO - 22/08/2023\r\n getSelectedContact: () => storage.getItem(SelectedContact),\r\n getSelectedOrg: () => storage.getItem(SelectedOrg),\r\n setSelectedContact: (contactId: string) => storage.setItem(SelectedContact, contactId),\r\n setSelectedOrg: (orgId: string) => storage.setItem(SelectedOrg, orgId)\r\n};\r\n","export default (name: string): string => {\r\n return name.charAt(0).toUpperCase() + name.slice(1).toLowerCase();\r\n}\r\n","export default function isDifferent(value1: any, value2: any): boolean {\r\n return JSON.stringify(value1) !== JSON.stringify(value2);\r\n}\r\n","// https://reactjs.org/blog/2015/12/16/ismounted-antipattern.html\r\nexport interface CancelablePromise {\r\n promise: Promise;\r\n cancel: () => void;\r\n}\r\n\r\nexport default function makeCancelable(\r\n promise: Promise,\r\n source: any,\r\n): CancelablePromise {\r\n let hasCanceled_ = false;\r\n\r\n const wrappedPromise = new Promise((resolve, reject) => {\r\n promise.then(\r\n val => (hasCanceled_ ? reject({ isCanceled: true }) : resolve(val)),\r\n error => (hasCanceled_ ? reject({ isCanceled: true }) : reject(error)),\r\n );\r\n });\r\n\r\n return {\r\n promise: wrappedPromise,\r\n cancel() {\r\n hasCanceled_ = true;\r\n if (source) {\r\n source.cancel();\r\n }\r\n },\r\n };\r\n}\r\n","import qs from 'qs';\r\n\r\nexport default class queryString {\r\n static parse(value: string) {\r\n return qs.parse(value, { ignoreQueryPrefix: true });\r\n }\r\n\r\n static stringify(value: any) {\r\n return qs.stringify(value, {\r\n strictNullHandling: true,\r\n encodeValuesOnly: true,\r\n allowDots: true,\r\n });\r\n }\r\n}\r\n","import { DropDownItem } from '../components/types';\r\n\r\nexport default function toSyncfusionDataSource(\r\n items: Array,\r\n emptyItemDescription: string | undefined = undefined,\r\n): Array<{ [key: string]: Object }> {\r\n const results = items.map(item => ({ id: item.id, item: item }));\r\n\r\n if (typeof emptyItemDescription !== 'undefined') {\r\n results.unshift({\r\n id: '',\r\n item: { id: '', displayValue: emptyItemDescription },\r\n });\r\n }\r\n\r\n return results;\r\n}\r\n\r\nexport const fields: object = { text: 'item.displayValue', value: 'id' };\r\n\r\nexport const transformDropDownData = (data: {\r\n items: Array;\r\n}): Array<{ [key: string]: Object }> => toSyncfusionDataSource(data.items);\r\n","export default (date: Date): Date => {\r\n return new Date(\r\n Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()),\r\n );\r\n};\r\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n reloadDocument?: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on
,\n * useSubmit(), , etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\n/**\n * Route loader function signature\n */\nexport interface LoaderFunction {\n (args: LoaderFunctionArgs):\n | Promise\n | DataFunctionValue;\n}\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs):\n | Promise\n | DataFunctionValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\ntype PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: number[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(\n branches[i],\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n safelyDecodeURI(pathname)\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:(\\w+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"/([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURI(value: string) {\n try {\n return decodeURI(value);\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (isPathRelative || toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n */\nexport class ErrorResponseImpl {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n// We don't want the class exported since usage of it at runtime is an\n// implementation detail, but we do want to export the shape so folks can\n// build their own abstractions around instances via isRouteErrorResponse()\nexport type ErrorResponse = InstanceType;\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n ActionFunction,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n AgnosticRouteObject,\n DataResult,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n ImmutableRouteKey,\n LoaderFunction,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key?: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key?: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_normalizeFormMethod: boolean;\n v7_prependBasename: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: { requestContext?: unknown }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise;\n}\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (state: RouterState): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_normalizeFormMethod: false,\n v7_prependBasename: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized =\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n !initialMatches.some((m) => m.route.lazy) &&\n // And we have to either have no loaders or have been provided hydrationData\n (!initialMatches.some((m) => m.route.loader) || init.hydrationData != null);\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location);\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(newState: Partial): void {\n state = {\n ...state,\n ...newState,\n };\n subscribers.forEach((subscriber) => subscriber(state));\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n updateState({\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n });\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n });\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionData: RouteData | undefined;\n let pendingError: RouteData | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError,\n };\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n\n // Create a GET request for the loaders\n request = new Request(request.url, { signal: request.signal });\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n pendingActionData,\n pendingError\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts: { replace?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace =\n result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, { submission, replace });\n return { shortCircuited: true };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionData,\n pendingError\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(location, {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n });\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n if (!isUninterruptedRevalidation) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState({\n navigation: loadingNavigation,\n ...(actionData\n ? Object.keys(actionData).length === 0\n ? { actionData: null }\n : { actionData }\n : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(state, redirect.result, { replace });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingError,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getFetcher(key: string): Fetcher {\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath })\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error);\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, submission);\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(key, routeId, path, match, matches, submission);\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error);\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n let fetcher = getSubmittingFetcher(submission, existingFetcher);\n state.fetchers.set(key, fetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n let doneFetcher = getDoneFetcher(undefined);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n return;\n } else {\n fetchRedirectIds.add(key);\n let loadingFetcher = getLoadingFetcher(submission);\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n return startRedirectNavigation(state, actionResult, {\n fetcherSubmission: submission,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n { [match.route.id]: actionResult.data },\n undefined // No need to send through errors since we short circuit above\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(state, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n let didAbortFetchLoads = abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n ...(didAbortFetchLoads || revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n // Put this fetcher into it's loading state\n let loadingFetcher = getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n let doneFetcher = getDoneFetcher(undefined);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(state, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n state.fetchers.delete(key);\n // TODO: In remix, this would reset to IDLE_NAVIGATION if it was a catch -\n // do we need to behave any differently with our non-redirect errors?\n // What if it was a non-redirect Response?\n updateState({\n fetchers: new Map(state.fetchers),\n errors: {\n [boundaryMatch.route.id]: result.error,\n },\n });\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n state: RouterState,\n redirect: RedirectResult,\n {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(state.location, redirect.location, {\n _isRedirect: true,\n });\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.reloadDocument) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(redirect.location)) {\n const url = init.history.createURL(redirect.location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(redirect.location);\n } else {\n routerWindow.location.assign(redirect.location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: redirect.location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename\n )\n ),\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n return callLoaderOrAction(\n \"loader\",\n createClientSideRequest(init.history, f.path, f.controller.signal),\n f.match,\n f.matches,\n manifest,\n mapRouteProperties,\n basename\n );\n } else {\n let error: ErrorResult = {\n type: ResultType.error,\n error: getInternalRouterError(404, { pathname: f.path }),\n };\n return error;\n }\n }),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\n ]);\n\n return { results, loaderResults, fetcherResults };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function setFetcherError(key: string, routeId: string, error: any) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n });\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n state.fetchers.delete(key);\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n router = {\n get basename() {\n return basename;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(\n request: Request,\n { requestContext }: { requestContext?: unknown } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n match\n );\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n { isStaticRequest: true, isRouteRequest, requestContext }\n );\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(\n `${method}() call aborted: ${request.method} ${request.url}`\n );\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(\n request,\n matches,\n requestContext,\n undefined,\n {\n [boundaryMatch.route.id]: result.error,\n }\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n { isStaticRequest: true, isRouteRequest, requestContext }\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(\n `${method}() call aborted: ${request.method} ${request.url}`\n );\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionError,\n activeDeferreds\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction isSubmissionNavigation(\n opts: RouterNavigateOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId != null && relative !== \"path\") {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route. When using relative:path,\n // fromRouteId is ignored since that is always relative to the current\n // location path\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getPathContributingMatches(contextualMatches).map((m) => m.pathnameBase),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: RouterNavigateOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId?: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : undefined;\n\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n if (match.route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n if (match.route.loader == null) {\n return false;\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n defaultShouldRevalidate:\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate if fetcher won't be present in the subsequent render\n if (!matches.some((m) => m.route.id === f.routeId)) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n defaultShouldRevalidate: isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n basename: string,\n opts: {\n isStaticRequest?: boolean;\n isRouteRequest?: boolean;\n requestContext?: unknown;\n } = {}\n): Promise {\n let resultType;\n let result;\n let onReject: (() => void) | undefined;\n\n let runHandler = (handler: ActionFunction | LoaderFunction) => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([\n handler({\n request,\n params: match.params,\n context: opts.requestContext,\n }),\n abortPromise,\n ]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let values = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n ]);\n if (handlerError) {\n throw handlerError;\n }\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still run even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, data: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n if (isResponse(result)) {\n let status = result.status;\n\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n location = normalizeTo(\n new URL(request.url),\n matches.slice(0, matches.indexOf(match) + 1),\n basename,\n true,\n location\n );\n } else if (!opts.isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\")\n ? new URL(currentUrl.protocol + location)\n : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (opts.isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n reloadDocument: result.headers.get(\"X-Remix-Reload-Document\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (opts.isRouteRequest) {\n let queryRouteResponse: QueryRouteResponse = {\n type:\n resultType === ResultType.error ? ResultType.error : ResultType.data,\n response: result,\n };\n throw queryRouteResponse;\n }\n\n let data: any;\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n data = await result.json();\n } else {\n data = await result.text();\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponseImpl(status, result.statusText, data),\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (resultType === ResultType.error) {\n return { type: resultType, error: result };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingError,\n activeDeferreds\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n isResponse(obj.response) &&\n (obj.type === ResultType.data || obj.type === ResultType.error)\n );\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n//#endregion\n","var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n *\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n *\n * @param {Function} handler - callback function to be triggered.\n * @returns {Function} ?\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n // eslint-disable-next-line\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getValue(nameSpace, obj) {\n // eslint-disable-next-line\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n // eslint-disable-next-line\n var start = obj || {};\n // eslint-disable-next-line\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[parseInt(i.toString(), 10)];\n if (i + 1 === length) {\n fromObj[\"\" + key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[\"\" + key])) {\n fromObj[\"\" + key] = {};\n }\n fromObj = fromObj[\"\" + key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n *\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} key - String value to the get the inner object\n * @returns {void} ?\n * @private\n */\n// eslint-disable-next-line\nexport function deleteObject(obj, key) {\n delete obj[\"\" + key];\n}\n/**\n *@private\n */\n// eslint-disable-next-line\nexport var containerObject = typeof window !== 'undefined' ? window : {};\n/**\n * Check weather the given argument is only object.\n *\n * @param {any} obj - Object which is need to check.\n * @returns {boolean} ?\n * @private\n */\n// eslint-disable-next-line\nexport function isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n *\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getEnumValue(enumObject, enumValue) {\n // eslint-disable-next-line\n return enumObject[enumValue];\n}\n/**\n * Merge the source object into destination object.\n *\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @returns {void} ?\n * @private\n */\nexport function merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[\"\" + deepmerge]) && (temrObj[\"\" + deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[\"\" + key]) || Array.isArray(tempProp[\"\" + key]))) {\n extend(temrObj[\"\" + key], temrObj[\"\" + key], tempProp[\"\" + key], true);\n }\n else {\n temrObj[\"\" + key] = tempProp[\"\" + key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n *\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @param {boolean} deep ?\n * @returns {Object} ?\n * @private\n */\nexport function extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n // eslint-disable-next-line\n if (!arguments_1[i]) {\n return \"continue\";\n }\n // eslint-disable-next-line\n var obj1 = arguments_1[i];\n Object.keys(obj1).forEach(function (key) {\n var src = result[\"\" + key];\n var copy = obj1[\"\" + key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n // eslint-disable-next-line\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n // eslint-disable-next-line\n if (Array.isArray(clone) && clone.hasOwnProperty('isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[\"\" + key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n // eslint-disable-next-line\n result[\"\" + key] = extend([], clone, copy, (clone && clone.length) || (copy && copy.length));\n }\n }\n else {\n result[\"\" + key] = copy;\n }\n });\n };\n var arguments_1 = arguments;\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n *\n * @param {Object} value - To check the object is null or undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n *\n * @param {Object} value - To check the object is undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n *\n * @param {string} definedName - To concatenate the unique id to provided name\n * @returns {string} ?\n * @private\n */\nexport function getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n *\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @returns {Function} ?\n * @private\n */\nexport function debounce(eventFunction, delay) {\n // eslint-disable-next-line\n var out;\n return function () {\n var _this = this;\n // eslint-disable-next-line\n var args = arguments;\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n/**\n * To convert the object to string for query url\n *\n * @param {Object} data ?\n * @returns {string} ?\n * @private\n */\n// eslint-disable-next-line\nexport function queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[\"\" + key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n *\n * @param {any} value - Specifies the T type array to be checked.\n * @returns {boolean} ?\n * @private\n */\nexport function isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n *\n * @param {Element} child - Specifies the child element to compare with parent.\n * @param {Element} parent - Specifies the parent element.\n * @returns {boolean} ?\n * @private\n */\nexport function compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n *\n * @param {string} message - Specifies the error message to be thrown.\n * @returns {void} ?\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n // eslint-disable-next-line\n throw e.message + '\\n' + e.stack;\n }\n}\n/**\n * This function is used to print given element\n *\n * @param {Element} element - Specifies the print content element.\n * @param {Window} printWindow - Specifies the print window.\n * @returns {Window} ?\n * @private\n */\nexport function print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));\n if (blinks.length) {\n for (var l = 0, len = blinks.length; l < len; l++) {\n links.push(blinks[parseInt(l.toString(), 10)]);\n }\n }\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[parseInt(i.toString(), 10)].outerHTML;\n }\n printWindow.document.write(' ' + reference + '' + div.innerHTML +\n '' + '');\n printWindow.document.close();\n printWindow.focus();\n // eslint-disable-next-line\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n *\n * @returns {HTMLElement} result\n * @param {HTMLElement | object} element ?\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[\"\" + xPath])) {\n return document.evaluate(element[\"\" + xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getInstance(element, component) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n for (var _i = 0, _a = elem[\"\" + instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nexport function addInstance(element, instance) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n elem[\"\" + instances].push(instance);\n }\n else {\n elem[\"\" + instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n *\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\n */\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[parseInt(i.toString(), 10)];\n }\n return ret;\n}\n","/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n *\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n *\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object} ?\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n *\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object} ?\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n *\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object} ?\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n // eslint-disable-next-line\n if (!res.hasOwnProperty(prop[key])) {\n // eslint-disable-next-line\n res[prop[key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp} ?\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }).join('|');\n var regExp = RegExp;\n return new regExp(regexStr, 'g');\n };\n /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\n */\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n // eslint-disable-next-line\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\n * @param {string} val ?\n * @returns {string} ?\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[parseInt(i.toString(), 10)] + '|';\n }\n else {\n ret += val[parseInt(i.toString(), 10)];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string} ?\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n // eslint-disable-next-line\n return obj[str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\n * @param {Object} obj ?\n * @returns {NumericObject} ?\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n var regExp = RegExp;\n ret.numberParseRegex = new regExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n // eslint-disable-next-line\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n // eslint-disable-next-line\n ret.mapper[i] = digits[i];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.',\n 'BHD': 'د.ب.',\n 'DZD': 'د.ج.',\n 'EGP': 'ج.م.',\n 'ILS': '₪',\n 'IQD': 'د.ع.',\n 'JOD': 'د.ا.',\n 'KMF': 'CF',\n 'KWD': 'د.ك.',\n 'LBP': 'ل.ل.',\n 'LYD': 'د.ل.',\n 'MAD': 'د.م.',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.',\n 'QAR': 'ر.ق.',\n 'SAR': 'ر.س.',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.',\n 'TND': 'د.ت.',\n 'YER': 'ر.ي.',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\n// eslint-disable-next-line\nexport var HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990,\n 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522,\n 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053,\n 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585,\n 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116,\n 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648,\n 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180,\n 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243,\n 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775,\n 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306,\n 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837,\n 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370,\n 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901,\n 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433,\n 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963,\n 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495,\n 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558,\n 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089,\n 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621,\n 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153,\n 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685,\n 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216,\n 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748,\n 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279,\n 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810,\n 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873,\n 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405,\n 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936,\n 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468,\n 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999,\n 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531,\n 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063,\n 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594,\n 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125,\n 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189,\n 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720,\n 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252,\n 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784,\n 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315,\n 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846,\n 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379,\n 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910,\n 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441,\n 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505,\n 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036,\n 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567,\n 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100,\n 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631,\n 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162,\n 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694,\n 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226,\n 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757,\n 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820,\n 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352,\n 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883,\n 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415,\n 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947,\n 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478,\n 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009,\n 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541,\n 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073,\n 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136,\n 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667,\n 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199,\n 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730,\n 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262,\n 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793,\n 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325,\n 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857,\n 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388,\n 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451,\n 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983,\n 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514,\n 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046,\n 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577,\n 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109,\n 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640,\n 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172,\n 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704,\n 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766,\n 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299,\n 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830,\n 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361,\n 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893,\n 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425,\n 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956,\n 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487,\n 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990\n ];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100.);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631. / 30.;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[parseInt(i.toString(), 10)] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/* tslint:disable no-any */\n/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.weekday = getValue('days.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.weekday = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.month = getValue('months.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.month = dependable.dateObject[base.month][standalone][base.monthIndex[len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n // eslint-disable-next-line\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n // eslint-disable-next-line\n ret += options.weekday[weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n // eslint-disable-next-line\n curvalstr = value[timeSetter[char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n // eslint-disable-next-line\n curval = value[timeSetter[char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n // eslint-disable-next-line\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n // eslint-disable-next-line\n ret += options.designator[desig];\n break;\n case 'G':\n // eslint-disable-next-line\n var dec = value.getFullYear() < 0 ? 0 : 1;\n // eslint-disable-next-line\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n // eslint-disable-next-line\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z':\n // eslint-disable-next-line\n var timezone = value.getTimezoneOffset();\n // eslint-disable-next-line\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n case ':':\n // eslint-disable-next-line\n ret += options.numMapper.numberSymbols[timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n *\n * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","import { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits'\n};\nvar integerError = 'minimumIntegerDigits';\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar spaceRegex = /\\s/;\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\nvar infinity = 'infinity';\nvar nan = 'nan';\n/**\n * Module for number formatting.\n *\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions, option);\n };\n };\n /**\n * Returns grouping details for the pattern provided\n *\n * @param {string} pattern ?\n * @returns {GroupDetails} ?\n */\n NumberFormat.getGroupingDetails = function (pattern) {\n var ret = {};\n var match = pattern.match(base.negativeDataRegex);\n if (match && match[4]) {\n var pattern_1 = match[4];\n var p = pattern_1.lastIndexOf(',');\n if (p !== -1) {\n var temp = pattern_1.split('.')[0];\n ret.primary = (temp.length - p) - 1;\n var s = pattern_1.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n };\n /**\n * Returns if the provided integer range is valid.\n *\n * @param {number} val1 ?\n * @param {number} val2 ?\n * @param {boolean} checkbothExist ?\n * @param {boolean} isFraction ?\n * @returns {boolean} ?\n */\n NumberFormat.checkValueRange = function (val1, val2, checkbothExist, isFraction) {\n var decide = isFraction ? 'f' : 's';\n var dint = 0;\n var str1 = errorText['l' + decide];\n // eslint-disable-next-line\n var str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n }\n else {\n return true;\n }\n }\n else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n };\n /**\n * Check if the provided fraction range is valid\n *\n * @param {number} val ?\n * @param {string} text ?\n * @param {boolean} isFraction ?\n * @returns {void} ?\n */\n NumberFormat.checkRange = function (val, text, isFraction) {\n var range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n };\n /**\n * Returns formatted numeric string for provided formatting options\n *\n * @param {number} value ?\n * @param {base.GenericFormatOptions} fOptions ?\n * @param {CommonOptions} dOptions ?\n * @returns {string} ?\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions, option) {\n var curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n }\n else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n }\n else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n }\n else {\n curData = fOptions.pData;\n }\n var fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n }\n else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits, option);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits\n && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[\"\" + i] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n }\n else {\n break;\n }\n }\n fValue = temp[0] + '.' + decimalPart;\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n fValue = curData.format === \"#,###,,;(#,###,,)\" ? this.customPivotFormat(parseInt(fValue)) : fValue;\n if (curData.useGrouping) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n if (fValue === '0' && option && option.format === '0') {\n return fValue + curData.nend;\n }\n return curData.nlead + fValue + curData.nend;\n }\n }\n };\n /**\n * Returns significant digits processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processSignificantDigits = function (value, min, max) {\n var temp = value + '';\n var tn;\n var length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n }\n else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n };\n /**\n * Returns grouped numeric string\n *\n * @param {string} val ?\n * @param {number} level1 ?\n * @param {string} sep ?\n * @param {string} decimalSymbol ?\n * @param {number} level2 ?\n * @returns {string} ?\n */\n NumberFormat.groupNumbers = function (val, level1, sep, decimalSymbol, level2) {\n var flag = !isNullOrUndefined(level2) && level2 !== 0;\n var split = val.split(decimalSymbol);\n var prefix = split[0];\n var length = prefix.length;\n var str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ?\n (sep + str) : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n };\n /**\n * Returns fraction processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processFraction = function (value, min, max, option) {\n var temp = (value + '').split('.')[1];\n var length = temp ? temp.length : 0;\n if (min && length < min) {\n var ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n }\n else {\n ret += value;\n for (var j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n }\n else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n var str = value + '';\n if (str[0] === '0' && option && option.format === '###.00') {\n str = str.slice(1);\n }\n return str;\n };\n /**\n * Returns integer processed numeric string\n *\n * @param {string} value ?\n * @param {number} min ?\n * @returns {string} ?\n */\n NumberFormat.processMinimumIntegers = function (value, min) {\n var temp = value.split('.');\n var lead = temp[0];\n var len = lead.length;\n if (len < min) {\n for (var i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n };\n /**\n * Returns custom format for pivot table\n *\n * @param {number} value ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n var _a = value.toString().split(\".\"), integer = _a[0], decimal = _a[1];\n return decimal && +decimal.substring(0, 1) >= 5\n ? Math.ceil(value).toString()\n : Math.floor(value).toString();\n }\n return \"\";\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar standalone = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/* tslint:disable no-any */\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n // eslint-disable-next-line\n var numMapper = isBlazor() ? dependable.parserObject.numbers :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[parseInt(i.toString(), 10)];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n // eslint-disable-next-line\n var charKey = datePartMatcher[char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n // eslint-disable-next-line\n var weekData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n weekData = getValue('days.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n weekData = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n var weekObject = parser.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n monthData = getValue('months.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n monthData = dependable.dateObject[month][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(monthData);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n // eslint-disable-next-line\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n canUpdate = true;\n // eslint-disable-next-line\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(periodValur);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n // eslint-disable-next-line\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n // eslint-disable-next-line\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n // eslint-disable-next-line\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n // eslint-disable-next-line\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n case '\\'':\n // eslint-disable-next-line\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[\"\" + charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n var regExp = RegExp;\n parseOptions.parserRegex = new regExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n // tslint:disable-next-line\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /* tslint:disable */\n /**\n * Returns date object for provided date options\n *\n * @param {DateParts} options ?\n * @param {Date} value ?\n * @returns {Date} ?\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n // eslint-disable-next-line\n var tValue = options[key];\n if (isUndefined(tValue) && key === 'day') {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n *\n * @param {string} value ?\n * @param {ParseOptions} parseOptions ?\n * @param {NumericOptions} num ?\n * @returns {DateParts} ?\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[\"\" + prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n // eslint-disable-next-line\n retOptions[prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[\"\" + prop] = val;\n }\n }\n else {\n // eslint-disable-next-line\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n // eslint-disable-next-line\n retOptions[prop] = parseOptions[prop][matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n *\n * @param {string} value ?\n * @param {NumericOptions} option ?\n * @returns {number} ?\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n *\n * @param {string} hourFormat ?\n * @param {base.TimeZoneOptions} tZone ?\n * @param {string} nRegex ?\n * @returns {string} ?\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n var splitStr;\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n // eslint-disable-next-line\n splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n *\n * @param {boolean} flag ?\n * @param {string} val1 ?\n * @param {string} val2 ?\n * @param {NumericOptions} num ?\n * @returns {number} ?\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar regExp = RegExp;\nvar parseRegex = new regExp('^([^0-9]*)' + '(([0-9,]*[0-9]+)(\\.[0-9]+)?)' + '([Ee][+-]?[0-9]+)?([^0-9]*)$');\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numOptions;\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n // eslint-disable-next-line\n numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // eslint-disable-next-line\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n *\n * @param {string} value ?\n * @param {NumericParts} options ?\n * @param {NumericOptions} numOptions ?\n * @returns {number} ?\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","import { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n /**\n * To attach handler for given property in current context.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @returns {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[\"\" + property] = [{ handler: handler, context: cntxt }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[\"\" + property], handler)) {\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @returns {void} ?\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[parseInt(i.toString(), 10)].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[parseInt(i.toString(), 10)].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[\"\" + property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @returns {void} ?\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[\"\" + blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[parseInt(index.toString(), 10)];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n // eslint-disable-next-line\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n *\n * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n // eslint-disable-next-line\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n *\n * @param {number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n *\n * @param {Date} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date} ?\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number} ?\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n *\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\n */\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n *\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n *\n * @param {Object[]} data Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void} ?\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void} ?\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n // eslint-disable-next-line\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @returns {string} ?\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n // eslint-disable-next-line\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n // eslint-disable-next-line\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","import { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nvar regExp = RegExp;\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\n// eslint-disable-next-line\nexport var IntlBase;\n(function (IntlBase) {\n /* eslint-disable */\n // tslint:disable-next-line:max-line-length.\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*[0#\\ ]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = new regExp(\"(^[ncpae]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.currencyFormatRegex = new regExp(\"(^[ca]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n '1-alt-variant': 'Common Era'\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y'\n }\n }\n },\n 'islamic': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Muh.',\n '2': 'Saf.',\n '3': 'Rab. I',\n '4': 'Rab. II',\n '5': 'Jum. I',\n '6': 'Jum. II',\n '7': 'Raj.',\n '8': 'Sha.',\n '9': 'Ram.',\n '10': 'Shaw.',\n '11': 'Dhuʻl-Q.',\n '12': 'Dhuʻl-H.'\n },\n 'narrow': {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '10': '10',\n '11': '11',\n '12': '12'\n },\n 'wide': {\n '1': 'Muharram',\n '2': 'Safar',\n '3': 'Rabiʻ I',\n '4': 'Rabiʻ II',\n '5': 'Jumada I',\n '6': 'Jumada II',\n '7': 'Rajab',\n '8': 'Shaʻban',\n '9': 'Ramadan',\n '10': 'Shawwal',\n '11': 'Dhuʻl-Qiʻdah',\n '12': 'Dhuʻl-Hijjah'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'AH'\n },\n 'eraAbbr': {\n '0': 'AH'\n },\n 'eraNarrow': {\n '0': 'AH'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y G',\n 'long': 'MMMM d, y G',\n 'medium': 'MMM d, y G',\n 'short': 'M/d/y GGGGG'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y G',\n 'yyyy': 'y G',\n 'yyyyM': 'M/y GGGGG',\n 'yyyyMd': 'M/d/y GGGGG',\n 'yyyyMEd': 'E, M/d/y GGGGG',\n 'yyyyMMM': 'MMM y G',\n 'yyyyMMMd': 'MMM d, y G',\n 'yyyyMMMEd': 'E, MMM d, y G',\n 'yyyyMMMM': 'MMMM y G',\n 'yyyyQQQ': 'QQQ y G',\n 'yyyyQQQQ': 'QQQQ y G'\n }\n }\n }\n },\n 'timeZoneNames': {\n 'hourFormat': '+HH:mm;-HH:mm',\n 'gmtFormat': 'GMT{0}',\n 'gmtZeroFormat': 'GMT'\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n }\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###'\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n 'numbers': {\n 'mapper': {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9'\n },\n 'mapperDigits': '0123456789',\n 'numberSymbols': {\n 'decimal': '.',\n 'group': ',',\n 'plusSign': '+',\n 'minusSign': '-',\n 'percentSign': '%',\n 'nan': 'NaN',\n 'timeSeparator': ':',\n 'infinity': '∞'\n },\n 'timeSeparator': ':',\n 'currencySymbol': '$',\n 'currencypData': {\n 'nlead': '$',\n 'nend': '',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentpData': {\n 'nlead': '',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentnData': {\n 'nlead': '-',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'currencynData': {\n 'nlead': '($',\n 'nend': ')',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalnData': {\n 'nlead': '-',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalpData': {\n 'nlead': '',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n }\n },\n 'dates': {\n 'dayPeriods': {\n 'am': 'AM',\n 'pm': 'PM'\n },\n 'dateSeperator': '/',\n 'days': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n },\n 'months': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n },\n 'eras': {\n '1': 'AD'\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\n * @returns {string} ?\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n *\n * @private\n * @param {string} type ?\n * @param {string} numSystem ?\n * @param {Object} obj ?\n * @param {boolean} isAccount ?\n * @returns {string} ?\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n // eslint-disable-next-line\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n *\n * @private\n * @param {string} val ?\n * @param {string} sym ?\n * @returns {string} ?\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n return val.replace(IntlBase.defaultCurrency, sym);\n }\n return '';\n }\n IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n // eslint-disable-next-line\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n var spaceCapture = integerPart.match(/\\ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/\\ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n dOptions.isCustomFormat = true;\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n // eslint-disable-next-line\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[parseInt(i.toString(), 10)];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n // eslint-disable-next-line\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n // eslint-disable-next-line\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\n * @private\n * @param {Object} dateObj ?\n * @returns {string} ?\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[d‏M‏]([^d‏M])[d‏M‏]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\n * @returns {string} ?\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n // eslint-disable-next-line\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // eslint-disable-next-line\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\n * @returns {string} ?\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\n */\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\n */\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[parseInt(x.toString(), 10)] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\n */\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[\"\" + iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[\"\" + firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n * @param {Date} date ?\n * @returns {number} ?\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n *\n * Send the request to server.\n *\n * @param {any} data - To send the user data\n * @return {Promise} ?\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n // eslint-disable-next-line\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n *\n * @param {string} key Key to search in the response header\n * @returns {string} ?\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders;\n var header;\n // eslint-disable-next-line\n responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n // eslint-disable-next-line\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","import { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[\"\" + key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n // eslint-disable-next-line\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {boolean}\n */\n Browser.getEvent = function (event) {\n // eslint-disable-next-line\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[\"\" + event].isPointer :\n (Browser.isTouch ? events[\"\" + event].isTouch + (!Browser.isDevice ? ' ' + events[\"\" + event].isDevice : '')\n : events[\"\" + event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return (Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined'\n && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1\n && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1);\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true && !REGX_BROWSER.CHROME.test(navigator.userAgent)) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { isNullOrUndefined as isNOU, isObject, merge } from './util';\n/**\n * The Fetch class provides a way to make asynchronous network requests, typically to retrieve resources from a server.\n * ```typescript\n * var fetchApi = new Fetch('index.html', 'GET');\n * fetchApi.send()\n * .then((value) => {\n * console.log(value);\n * }).catch((error) => {\n * console.log(error);\n * });\n * ```\n */\nvar Fetch = /** @class */ (function () {\n /**\n * Constructor for Fetch class.\n *\n * @param {string|Object} options - Specifies the URL or Request object with URL to which the request is to be sent.\n * @param {string} type - Specifies which request method is to be used, such as GET, POST, etc.\n * @param {string} contentType - Specifies the content type of the request, which is used to indicate the original media type of the resource.\n */\n function Fetch(options, type, contentType) {\n /**\n * Specifies which request method is to be used, such as GET, POST, etc.\n *\n * @default GET\n */\n this.type = 'GET';\n /**\n * A boolean value indicating whether to reject the promise or not.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n if (typeof options === 'string') {\n this.url = options;\n this.type = !isNOU(type) ? type.toUpperCase() : this.type;\n this.contentType = contentType;\n }\n else if (isObject(options) && Object.keys(options).length > 0) {\n merge(this, options);\n }\n this.contentType = !isNOU(this.contentType) ? this.contentType : 'application/json; charset=utf-8';\n }\n /**\n * Send the request to server.\n *\n * @param {string|Object} data - Specifies the data that needs to be added to the request.\n * @returns {Promise} - Returns the response to a request.\n */\n Fetch.prototype.send = function (data) {\n var _this = this;\n var contentTypes = {\n 'application/json': 'json',\n 'multipart/form-data': 'formData',\n 'application/octet-stream': 'blob',\n 'application/x-www-form-urlencoded': 'formData'\n };\n try {\n if (isNOU(this.fetchRequest) && this.type === 'GET') {\n this.fetchRequest = new Request(this.url, { method: this.type });\n }\n else if (isNOU(this.fetchRequest)) {\n this.data = !isNOU(data) ? data : this.data;\n this.fetchRequest = new Request(this.url, {\n method: this.type,\n headers: { 'Content-Type': this.contentType },\n body: this.data\n });\n }\n var eventArgs = { cancel: false, fetchRequest: this.fetchRequest };\n this.triggerEvent(this['beforeSend'], eventArgs);\n if (eventArgs.cancel) {\n return null;\n }\n this.fetchResponse = fetch(this.fetchRequest);\n return this.fetchResponse.then(function (response) {\n _this.triggerEvent(_this['onLoad'], response);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n var responseType = 'text';\n for (var _i = 0, _a = Object.keys(contentTypes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (response.headers.get('Content-Type').indexOf(key) !== -1) {\n responseType = contentTypes[key];\n }\n }\n return response[responseType]();\n // eslint-disable-next-line\n }).then(function (data) {\n _this.triggerEvent(_this['onSuccess'], data, _this);\n return data;\n // eslint-disable-next-line\n }).catch(function (error) {\n var returnVal = {};\n if (_this.emitError) {\n _this.triggerEvent(_this['onFailure'], error);\n returnVal = Promise.reject(error);\n }\n return returnVal;\n });\n }\n catch (error) {\n return error;\n }\n };\n Fetch.prototype.triggerEvent = function (callback, data, instance) {\n if (!isNOU(callback) && typeof callback === 'function') {\n callback(data, instance);\n }\n };\n return Fetch;\n}());\nexport { Fetch };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n *
\n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n }\n else {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[parseInt(j.toString(), 10)] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[parseInt(j.toString(), 10)], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n // eslint-disable-next-line\n eventData = EventHandler.addOrGetEventData(element);\n // eslint-disable-next-line\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n element.removeEventListener(copyData[parseInt(i.toString(), 10)].name, copyData[parseInt(i.toString(), 10)].debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n *\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nexport function createElement(tagName, properties) {\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n var regExp = RegExp;\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new regExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\n */\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n }\n else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\n// eslint-disable-next-line\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[\"\" + iKey] = attributes[\"\" + key];\n }\n else {\n ele.setAttribute(key, attributes[\"\" + key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\n// eslint-disable-next-line\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[parseInt(i.toString(), 10)].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {\n if (!list[parseInt(j.toString(), 10)].match(/\\[.*\\]/)) {\n var splitId = list[parseInt(j.toString(), 10)].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[parseInt(j.toString(), 10)].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[parseInt(j.toString(), 10)] = setId.join('.');\n }\n }\n }\n }\n idList[parseInt(i.toString(), 10)] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n *\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @returns {string} ?\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[\"\" + property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n // eslint-disable-next-line\n element.style[key] = attrs[key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @returns {void} ?\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function matches(element, selector) {\n // eslint-disable-next-line\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // eslint-disable-next-line\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","import { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp(']');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} element ?\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n /**\n * Calls for child element data bind\n *\n * @param {Object} obj ?\n * @param {Object} parent ?\n * @returns {void} ?\n */\n // tslint:disable-next-line:no-any\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[\"\" + key] instanceof Array) {\n for (var _a = 0, _b = parent[\"\" + key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[\"\" + key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n *\n * @returns {void} ?\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n /* tslint:disable:no-any */\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[\"\" + sfBlazor].updateModel) {\n window[\"\" + sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n var newChanges = {};\n newChanges[\"\" + key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {void} ?\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {void} ?\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n *\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @returns {void} ?\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[\"\" + blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n *\n * @returns {void} ?\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n *\n * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line\n this.element.ej2_instances =\n this.element.ej2_instances.filter(function (i) { return i !== _this; });\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\n */\n// tslint:disable-next-line:no-any\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[parseInt(i.toString(), 10)];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n *\n * @param {HTMLElement} element ?\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[parseInt(i.toString(), 10)].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\n","import { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n *\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type ?\n * @returns {ClassObject} ?\n */\n// eslint-disable-next-line\nfunction getObject(instance, curKey, defaultValue, type) {\n // eslint-disable-next-line\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[\"\" + curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[\"\" + curKey];\n}\n/**\n * Returns object array\n *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\n// eslint-disable-next-line\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[parseInt(i.toString(), 10)], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[parseInt(i.toString(), 10)], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[parseInt(i.toString(), 10)], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[\"\" + curKey] = defaultValue;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n * Set the properties for the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[\"\" + curKey] !== newValue) {\n // eslint-disable-next-line\n var oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[\"\" + curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[\"\" + curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[\"\" + curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[\"\" + curKey], extendFunc, descriptor);\n });\n }\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[\"\" + curKey], 'isComplexArray', { value: true });\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n // eslint-disable-next-line\n var oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\n */\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n Array.prototype[\"\" + dFunc].apply(prop, [newValue[parseInt(i.toString(), 10)]]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValue[parseInt(i.toString(), 10)], !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[parseInt(i.toString(), 10)], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[\"\" + dFunc].apply(prop);\n // eslint-disable-next-line\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\n */\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[\"\" + keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[\"\" + keyString][\"\" + action] = arrayFunction;\n }\n }\n return modelObject;\n}\n// eslint-disable-next-line\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n *\n * @returns {PropertyDecorator} ?\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[\"\" + key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[\"\" + key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * @param {Function} classConstructor ?\n * @returns {void} ?\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\n// eslint-disable-next-line\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n // eslint-disable-next-line\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n // eslint-disable-next-line\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[\"\" + key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n // eslint-disable-next-line\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n // eslint-disable-next-line\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {void} ?\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n *\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (animationMode === 'Disable') {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n }\n else {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n }\n };\n /**\n * Triggers animation\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element\n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame\n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n //startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n *\n * @param {AnimationModel} options ?\n * @returns {AnimationModel} ?\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
\n * \n * ```\n *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return (function () {\n // do nothing.\n });\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\n */\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n *\n * @param {MouseEvent} e ?\n * @param {RippleArgs} eventArgs ?\n * @returns {void} ?\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n *\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean} ?\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n *\n * @private\n */\nexport var animationMode = '';\n/**\n * Method for set the Global animation modes for Syncfusion Blazor components.\n *\n * @param {string} value - Specifies the animation mode.\n * @returns {void}\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n","/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n /**\n * Inject required modules in component library\n *\n * @returns {void} ?\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[parseInt(i.toString(), 10)];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module && module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n *\n * @returns {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Removes all unused modules\n *\n * @param {ModuleDeclaration[]} moduleList ?\n * @returns {void} ?\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n *\n * @param {string} name ?\n * @returns {string} ?\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n *\n * @param {string} modName ?\n * @returns {boolean} ?\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\nexport var componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,\n 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,\n 105, 100, 97, 116, 101, 100];\nvar accountURL;\n/**\n * License validation module\n *\n * @private\n */\nvar LicenseValidator = /** @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.isLicensed = true;\n this.version = '22';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats|essentialstudio/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n trailExpired: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n versionMismatched: 'The included Syncfusion license key is invalid.',\n platformMismatched: 'The included Syncfusion license key is invalid.',\n invalidKey: 'The included Syncfusion license key is invalid.'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n /**\n * Sets the license key.\n *\n * @param {string} key - Specifies the license key.\n * @returns {void}\n */\n function set(key) { licKey = key; }\n /**\n * Gets the license key.\n *\n * @returns {string} -Gets the license key.\n */\n function get() { return licKey; }\n return {\n setKey: set,\n getKey: get\n };\n })();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = (function () {\n var npxLicKey = 'npxKeyReplace';\n /**\n * Gets the license key.\n *\n * @returns {string} - Gets the license key.\n */\n function get() { return npxLicKey; }\n return {\n getKey: get\n };\n })();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n */\n LicenseValidator.prototype.validate = function () {\n var contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];\n var URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];\n if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n var validateURL = void 0;\n if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace')) {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n }\n else if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n else if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n }\n else {\n break;\n }\n }\n }\n }\n else {\n validateMsg = this.errors.invalidKey;\n }\n }\n else {\n var licenseContent = getValue(convertToChar(contentKey), containerObject);\n validateURL = getValue(convertToChar(URLKey), containerObject);\n if (licenseContent && licenseContent !== '') {\n validateMsg = licenseContent;\n }\n else {\n validateMsg = this.errors.noLicense;\n }\n }\n if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n accountURL = (validateURL && validateURL !== '') ? validateURL : \"https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=MjI=&utm_source=license&utm_medium=listing&utm_campaign=license-information\";\n var errorDiv = createElement('div', {\n innerHTML: \"\" + validateMsg + ' ' + '
Claim your free account'\n });\n errorDiv.setAttribute('style', \"position: fixed;\\n top: 10px;\\n left: 10px;\\n right: 10px;\\n font-size: 14px;\\n background: #EEF2FF;\\n color: #222222;\\n z-index: 999999999;\\n text-align: left;\\n border: 1px solid #EEEEEE;\\n padding: 10px 11px 10px 50px;\\n border-radius: 8px;\\n font-family: Helvetica Neue, Helvetica, Arial;\");\n document.body.appendChild(errorDiv);\n this.isLicensed = false;\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n return this.isLicensed;\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n }\n catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n *\n * @returns {IValidator} - Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,\n 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,\n 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n }\n else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ (pkey[parseInt(k.toString(), 10)] >> 16));\n }\n }\n else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[parseInt(i.toString(), 10)] = decodeStr[parseInt(i.toString(), 10)].charCodeAt(0) - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n resultArray.push({ platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2] });\n }\n }\n else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{ invalidPlatform: invalidPlatform }];\n }\n else {\n return resultArray.length ? resultArray : null;\n }\n }\n catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}());\nvar licenseValidator = new LicenseValidator();\n/**\n * Converts the given number to characters.\n *\n * @param {number} cArr - Specifies the license key as number.\n * @returns {string}\n */\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n *\n * @param {string} key - license key\n * @returns {void}\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n return licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\n};\n// Method for create overlay over the sample\nexport var createLicenseOverlay = function () {\n var bannerTemplate = \"\\n
\\n
\\n
\\n \\n
\\n
Claim your FREE account and get a key in less than a minute
\\n
    \\n
  • Access to a 30-day free trial of any of our products.
  • \\n
  • Access to 24x5 support by developers via the support tickets, forum, feature & feedback page and chat.
  • \\n
  • 200+ ebooks on the latest technologies, industry trends, and research topics.\\n
  • \\n
  • Largest collection of over 7,000 flat and wireframe icons for free with Syncfusion Metro Studio.
  • \\n
  • Free and unlimited access to Syncfusion technical blogs and whitepapers.
  • \\n
\\n
Syncfusion is trusted by 29,000+ businesses worldwide
\\n \\n Claim your FREE account\\n
have a Syncfusion account? Sign In
\\n
\\n
\";\n if (typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n var errorBackground = createElement('div', {\n innerHTML: bannerTemplate\n });\n document.body.appendChild(errorBackground);\n }\n};\n","import { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n *\n * @private\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n *\n * @param {boolean} val ?\n * @param {string} propName ?\n * @returns {void} ?\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[\"\" + propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[\"\" + propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {void} ?\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\n * @returns {void} ?\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[parseInt(i.toString(), 10)]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[parseInt(i.toString(), 10)]];\n }\n }\n else {\n newChanges[\"\" + parentKey] = {};\n parent_1 = newChanges[\"\" + parentKey];\n newChanges[\"\" + parentKey][\"\" + key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[\"\" + actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n // eslint-disable-next-line\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { validateLicense, createLicenseOverlay, componentList } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\n// Decalre the static variable to count the instance\nvar instancecount = 0;\n// Decalre the static variable to find if control limit exceed or not\nvar isvalid = true;\n// We have added styles to inline type so here declare the static variable to detect if banner is added or not\nvar isBannerAdded = false;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n *\n * @param {Object} options ?\n * @param {string} selector ?\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n *\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n // Based on the considered control list we have count the instance\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\" && !validateLicense()) {\n if (componentList.indexOf(_this.getModuleName()) !== -1) {\n instancecount = instancecount + 1;\n if (instancecount > 5) {\n isvalid = false;\n }\n }\n }\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n /**\n * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n this.detachUnloadEvent();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n *\n * @returns {void} ?\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n *\n * @returns {HTMLElement} ?\n */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n *\n * @returns {any} ?\n */\n // eslint-disable-next-line\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Adding unload event to persist data when enable persistence true\n */\n Component.prototype.attachUnloadEvent = function () {\n this.handleUnload = this.handleUnload.bind(this);\n window.addEventListener('unload', this.handleUnload);\n };\n /**\n * Handling unload event to persist data when enable persistence true\n */\n Component.prototype.handleUnload = function () {\n this.setPersistData();\n };\n /**\n * Removing unload event to persist data when enable persistence true\n */\n Component.prototype.detachUnloadEvent = function () {\n window.removeEventListener('unload', this.handleUnload);\n };\n /**\n * Appends the control within the given HTML element\n *\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n * @returns {void} ?\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n this.attachUnloadEvent();\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n // Checked weather cases are valid or not. If control leads to more than five counts \n if (!isvalid && !isBannerAdded) {\n createLicenseOverlay();\n isBannerAdded = true;\n }\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n *\n * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // eslint-disable-next-line\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n *\n * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @returns {void} ?\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[parseInt(i.toString(), 10)]) === -1) {\n this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() +\n this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n // eslint-disable-next-line\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\n };\n // eslint-disable-next-line\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = void 0;\n // eslint-disable-next-line\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n // eslint-disable-next-line\n var value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n var regExp = RegExp;\n return new regExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[\"\" + key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[\"\" + key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection\n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar positionProp = ['offsetLeft', 'offsetTop'];\nvar axisMapper = ['x', 'y'];\nvar axisValueMapper = ['left', 'top'];\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n _this.eleTop = 0;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[\"\" + axis]] > element[client[\"\" + axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[parseInt(i.toString(), 10)]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10)\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\n }\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n // tslint:disable-next-line:max-func-body-length\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.enableAutoScroll) {\n this.setDragArea();\n }\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);\n draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);\n }\n else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n }\n else {\n if (this.dragArea) {\n var isDialogEle = this.helperElement.classList.contains('e-dialog');\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\n }\n }\n if (this.dragArea) {\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\n }\n if ((top - iTop) < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if ((tempDraEleTop + marginTop + iTop) < 0) {\n draEleTop -= marginTop + iTop;\n }\n else {\n draEleTop = tempDraEleTop;\n }\n }\n else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n /* tslint:disable no-any */\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n }\n else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n /* tslint:disable no-any */\n Draggable.prototype.getScrollParent = function (node, reverse) {\n /* tslint:disable no-any */\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[parseInt(i.toString(), 10)])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {\n return nodeEl[parseInt(i.toString(), 10)];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if ((nodeEle.clientHeight + document.scrollingElement.scrollTop - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n else if (nodeEle && nodeEle !== document.scrollingElement) {\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - this.helperElement.clientHeight + document.scrollingElement.scrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - this.helperElement.clientHeight - document.scrollingElement.scrollTop)) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[parseInt(i.toString(), 10)];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[\"\" + lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[\"\" + lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n }\n else {\n top = elementArea.top;\n }\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version) > 12;\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n /* tslint:disable no-any */\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (document.scrollingElement && (!isdragscroll && !this.clone)) {\n var isVerticalScroll = document.scrollingElement.scrollHeight > 0 && document.scrollingElement.scrollHeight > document.scrollingElement.clientHeight && document.scrollingElement.scrollTop > 0;\n var isHorrizontalScroll = document.scrollingElement.scrollWidth > 0 && document.scrollingElement.scrollWidth > document.scrollingElement.clientWidth && document.scrollingElement.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - document.scrollingElement.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - document.scrollingElement.scrollTop : pageY;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[\"\" + name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
Droppable
\n * \n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n // eslint-disable-next-line\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
;\n * \n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n // eslint-disable-next-line\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n *\n * @param {string} controlName ?\n * @param {Object} localeStrings ?\n * @param {string} locale ?\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n *\n * @param {string} locale ?\n * @returns {void} ?\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n *\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n * @returns {void} ?\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n *\n * @param {string} prop - specifies the property for which localize text to be returned.\n * @returns {string} ?\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[\"\" + prop])) {\n return this.currentLocale[\"\" + prop];\n }\n else {\n return this.localeStrings[\"\" + prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n *\n * @param {Object} curObject ?\n * @param {string} locale ?\n * @returns {Object} ?\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[\"\" + locale]) {\n return (curObject)[\"\" + locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n var isFirefox = (/Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n // eslint-disable-next-line\n eSwipeArgs = extend(eSwipeArgs, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed\n /**\n *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n *\n * @returns {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n *\n * @returns {string} ?\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n *\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean} ?\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n var eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n // eslint-disable-next-line\n eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n // eslint-disable-next-line\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(/if|/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s-+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n *\n * @param {RegExp} value - Value expression.\n * @returns {RegExp} ?\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n *\n * @param {string | Function} template - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n * @private\n */\nexport function compile(template, helper, ignorePrefix) {\n if (typeof template === 'function') {\n return template;\n }\n else {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper, ignorePrefix);\n // eslint-disable-next-line\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = 'var str=\\\"' + evalExpResult + '\\\";' + condtion + ' return str;';\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n }\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, \n // eslint-disable-next-line\n function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n // eslint-disable-next-line\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n // eslint-disable-next-line\n var fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n // eslint-disable-next-line\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = cnt !== '' ? '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"' : ' ';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix && str !== \"true\" && str !== \"false\") ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// eslint-disable-next-line\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n // eslint-disable-next-line\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+ 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n // eslint-disable-next-line\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Component, isBlazor, isRippleEnabled } from '@syncfusion/ej2-base';\nimport { addClass, Event, detach, removeClass } from '@syncfusion/ej2-base';\nimport { rippleEffect, EventHandler, Observer, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getTextNode } from '../common/common';\n/**\n * Defines the icon position of button.\n */\nexport var IconPosition;\n(function (IconPosition) {\n /**\n * Positions the Icon at the left of the text content in the Button.\n */\n IconPosition[\"Left\"] = \"Left\";\n /**\n * Positions the Icon at the right of the text content in the Button.\n */\n IconPosition[\"Right\"] = \"Right\";\n /**\n * Positions the Icon at the top of the text content in the Button.\n */\n IconPosition[\"Top\"] = \"Top\";\n /**\n * Positions the Icon at the bottom of the text content in the Button.\n */\n IconPosition[\"Bottom\"] = \"Bottom\";\n})(IconPosition || (IconPosition = {}));\nexport var buttonObserver = new Observer();\nvar cssClassName = {\n RTL: 'e-rtl',\n BUTTON: 'e-btn',\n PRIMARY: 'e-primary',\n ICONBTN: 'e-icon-btn'\n};\n/**\n * The Button is a graphical user interface element that triggers an event on its click action. It can contain a text, an image, or both.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Button = /** @class */ (function (_super) {\n __extends(Button, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {ButtonModel} options - Specifies the button model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function Button(options, element) {\n return _super.call(this, options, element) || this;\n }\n Button.prototype.preRender = function () {\n // pre render code snippets\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Button.prototype.render = function () {\n this.initialize();\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + cssClassName.BUTTON });\n this.renderComplete();\n };\n Button.prototype.initialize = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n if (!isBlazor() || (isBlazor() && this.getModuleName() !== 'progress-btn')) {\n if (this.content) {\n var tempContent = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.content) : this.content;\n this.element.innerHTML = tempContent;\n }\n this.setIconCss();\n }\n if (this.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n if (this.disabled) {\n this.controlStatus(this.disabled);\n }\n else {\n this.wireEvents();\n }\n };\n Button.prototype.controlStatus = function (disabled) {\n this.element.disabled = disabled;\n };\n Button.prototype.setIconCss = function () {\n if (this.iconCss) {\n var span = this.createElement('span', { className: 'e-btn-icon ' + this.iconCss });\n if (!this.element.textContent.trim()) {\n this.element.classList.add(cssClassName.ICONBTN);\n }\n else {\n span.classList.add('e-icon-' + this.iconPosition.toLowerCase());\n if (this.iconPosition === 'Top' || this.iconPosition === 'Bottom') {\n this.element.classList.add('e-' + this.iconPosition.toLowerCase() + '-icon-btn');\n }\n }\n var node = this.element.childNodes[0];\n if (node && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n this.element.insertBefore(span, node);\n }\n else {\n this.element.appendChild(span);\n }\n }\n };\n Button.prototype.wireEvents = function () {\n if (this.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n };\n Button.prototype.unWireEvents = function () {\n if (this.isToggle) {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n }\n };\n Button.prototype.btnClickHandler = function () {\n if (this.element.classList.contains('e-active')) {\n this.element.classList.remove('e-active');\n }\n else {\n this.element.classList.add('e-active');\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Button.prototype.destroy = function () {\n var classList = [cssClassName.PRIMARY, cssClassName.RTL, cssClassName.ICONBTN, 'e-success', 'e-info', 'e-danger',\n 'e-warning', 'e-flat', 'e-outline', 'e-small', 'e-bigger', 'e-active', 'e-round',\n 'e-top-icon-btn', 'e-bottom-icon-btn'];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n _super.prototype.destroy.call(this);\n removeClass([this.element], classList);\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n if (this.content) {\n this.element.innerHTML = this.element.innerHTML.replace(this.content, '');\n }\n var span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.unWireEvents();\n if (isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Button.prototype.getModuleName = function () {\n return 'btn';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist Data\n * @private\n */\n Button.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @private\n * @returns {void}\n */\n Button.Inject = function () {\n // Inject code snippets\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ButtonModel} newProp - Specifies new properties\n * @param {ButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Button.prototype.onPropertyChanged = function (newProp, oldProp) {\n var span = this.element.querySelector('span.e-btn-icon');\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'isPrimary':\n if (newProp.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n else {\n this.element.classList.remove(cssClassName.PRIMARY);\n }\n break;\n case 'disabled':\n this.controlStatus(newProp.disabled);\n break;\n case 'iconCss': {\n if (span) {\n if (newProp.iconCss) {\n span.className = 'e-btn-icon ' + newProp.iconCss;\n if (this.element.textContent.trim()) {\n if (this.iconPosition === 'Left') {\n span.classList.add('e-icon-left');\n }\n else {\n span.classList.add('e-icon-right');\n }\n }\n }\n else {\n detach(span);\n }\n }\n else {\n this.setIconCss();\n }\n break;\n }\n case 'iconPosition':\n removeClass([this.element], ['e-top-icon-btn', 'e-bottom-icon-btn']);\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.setIconCss();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n else {\n this.element.classList.remove(cssClassName.RTL);\n }\n break;\n case 'content': {\n var node = getTextNode(this.element);\n if (!node) {\n this.element.classList.remove(cssClassName.ICONBTN);\n }\n if (!isBlazor() || (isBlazor() && !this.isServerRendered && this.getModuleName() !== 'progress-btn')) {\n if (this.enableHtmlSanitizer) {\n newProp.content = SanitizeHtmlHelper.sanitize(newProp.content);\n }\n this.element.innerHTML = newProp.content;\n this.setIconCss();\n }\n break;\n }\n case 'isToggle':\n if (newProp.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n else {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n removeClass([this.element], ['e-active']);\n }\n break;\n }\n }\n };\n /**\n * Click the button element\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to Button\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('Left')\n ], Button.prototype, \"iconPosition\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isPrimary\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"content\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isToggle\", void 0);\n __decorate([\n Property()\n ], Button.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Button.prototype, \"created\", void 0);\n Button = __decorate([\n NotifyPropertyChanges\n ], Button);\n return Button;\n}(Component));\nexport { Button };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { addClass, detach, getUniqueID, isRippleEnabled, removeClass, rippleEffect, closest } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler, setHiddenInput } from './../common/common';\nvar CHECK = 'e-check';\nvar DISABLED = 'e-checkbox-disabled';\nvar FRAME = 'e-frame';\nvar INDETERMINATE = 'e-stop';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RIPPLECHECK = 'e-ripple-check';\nvar RIPPLEINDETERMINATE = 'e-ripple-stop';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-checkbox-wrapper';\nvar containerAttr = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value'];\n/**\n * The CheckBox is a graphical user interface element that allows you to select one or more options from the choices.\n * It contains checked, unchecked, and indeterminate states.\n * ```html\n * \n * \n * ```\n */\nvar CheckBox = /** @class */ (function (_super) {\n __extends(CheckBox, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {CheckBoxModel} options - Specifies checkbox model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function CheckBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isMouseClick = false;\n _this.clickTriggered = false;\n _this.validCheck = true;\n return _this;\n }\n CheckBox.prototype.changeState = function (state, isInitialize) {\n var ariaState;\n var rippleSpan;\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n }\n if (state === 'check') {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n ariaState = 'true';\n this.element.checked = true;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = false;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else if (state === 'uncheck') {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLECHECK, RIPPLEINDETERMINATE]);\n }\n ariaState = 'false';\n this.element.checked = false;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = true;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLECHECK);\n rippleSpan.classList.add(RIPPLEINDETERMINATE);\n }\n ariaState = 'mixed';\n this.element.indeterminate = true;\n this.indeterminate = true;\n }\n };\n CheckBox.prototype.clickHandler = function (event) {\n if (event.target.tagName === 'INPUT' && this.clickTriggered) {\n if (this.isVue) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n this.clickTriggered = false;\n return;\n }\n if (event.target.tagName === 'SPAN' || event.target.tagName === 'LABEL') {\n this.clickTriggered = true;\n }\n if (this.isMouseClick) {\n this.focusOutHandler();\n this.isMouseClick = false;\n }\n if (this.indeterminate) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n this.indeterminate = false;\n this.element.indeterminate = false;\n }\n else if (this.checked) {\n this.changeState('uncheck');\n this.checked = false;\n }\n else {\n this.changeState('check');\n this.checked = true;\n }\n var changeEventArgs = { checked: this.updateVueArrayModel(false), event: event };\n this.trigger('change', changeEventArgs);\n event.stopPropagation();\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CheckBox.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n if (this.wrapper) {\n wrapper = this.wrapper;\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (this.getWrapper() && wrapper.parentNode) {\n wrapper.parentNode.insertBefore(this.element, wrapper);\n }\n detach(wrapper);\n this.element.checked = false;\n if (this.indeterminate) {\n this.element.indeterminate = false;\n }\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n }\n }\n };\n CheckBox.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n CheckBox.prototype.focusOutHandler = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n wrapper.classList.remove('e-focus');\n }\n this.isFocused = false;\n };\n /**\n * Gets the module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n CheckBox.prototype.getModuleName = function () {\n return 'checkbox';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n CheckBox.prototype.getPersistData = function () {\n return this.addOnPersist(['checked', 'indeterminate']);\n };\n CheckBox.prototype.getWrapper = function () {\n if (this.element && this.element.parentElement) {\n return this.element.parentElement.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n if (this.isVue && typeof this.value === 'boolean' && this.value === true) {\n this.setProperties({ 'checked': true }, true);\n }\n }\n if (this.checked) {\n this.changeState('check', true);\n }\n if (this.indeterminate) {\n this.changeState();\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n CheckBox.prototype.initWrapper = function () {\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', {\n className: WRAPPER\n });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n var frameSpan = this.createElement('span', { className: 'e-icons ' + FRAME });\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n wrapper.appendChild(label);\n label.appendChild(this.element);\n setHiddenInput(this, label);\n label.appendChild(frameSpan);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', { className: RIPPLE });\n if (this.labelPosition === 'Before') {\n label.appendChild(rippleSpan);\n }\n else {\n label.insertBefore(rippleSpan, frameSpan);\n }\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n CheckBox.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n };\n CheckBox.prototype.labelMouseDownHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n CheckBox.prototype.labelMouseUpHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = 0; i < rippleElem.length - 1; i++) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {CheckBoxModel} newProp - Specifies new Properties\n * @param {CheckBoxModel} oldProp - Specifies old Properties\n *\n * @returns {void}\n */\n CheckBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n this.indeterminate = false;\n this.element.indeterminate = false;\n this.changeState(newProp.checked ? 'check' : 'uncheck');\n break;\n case 'indeterminate':\n if (newProp.indeterminate) {\n this.changeState();\n }\n else {\n this.element.indeterminate = false;\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.wrapper = this.getWrapper();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED);\n wrapper.setAttribute('aria-disabled', 'false');\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition': {\n var label = wrapper.getElementsByClassName(LABEL)[0];\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n detach(label);\n if (newProp.labelPosition === 'After') {\n labelWrap.appendChild(label);\n }\n else {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n break;\n }\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (this.isVue && typeof newProp.value === 'object') {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToWrapper();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.preRender = function () {\n var element = this.element;\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-CHECKBOX', 'checkbox', element, WRAPPER, 'checkbox');\n this.element = element;\n if (this.element.getAttribute('type') !== 'checkbox') {\n this.element.setAttribute('type', 'checkbox');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.updateHtmlAttributeToWrapper();\n this.updateVueArrayModel(true);\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n CheckBox.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CheckBox.prototype.setText = function (text) {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n return;\n }\n var label = wrapper.getElementsByClassName(LABEL)[0];\n if (label) {\n label.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n label = this.createElement('span', { className: LABEL, innerHTML: text });\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n if (this.labelPosition === 'Before') {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n else {\n labelWrap.appendChild(label);\n }\n }\n };\n CheckBox.prototype.changeHandler = function (e) {\n e.stopPropagation();\n };\n CheckBox.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n this.element.checked = this.initialCheckedValue;\n };\n CheckBox.prototype.unWireEvents = function () {\n var wrapper = this.wrapper;\n EventHandler.remove(wrapper, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.remove(label, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(label, 'mouseup', this.labelMouseUpHandler);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.remove(formElem, 'reset', this.formResetHandler);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.remove(this.element, 'change', this.changeHandler);\n }\n };\n CheckBox.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(wrapper, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.add(label, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(label, 'mouseup', this.labelMouseUpHandler, this);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.add(formElem, 'reset', this.formResetHandler, this);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n }\n };\n CheckBox.prototype.updateVueArrayModel = function (init) {\n if (this.isVue && typeof this.value === 'object') {\n var value = this.element.value;\n if (value && this.value) {\n if (init) {\n for (var i = 0; i < this.value.length; i++) {\n if (value === this.value[i]) {\n this.changeState('check');\n this.setProperties({ 'checked': true }, true);\n }\n }\n }\n else {\n var index = this.value.indexOf(value);\n if (this.checked) {\n if (index < 0) {\n this.value.push(value);\n }\n }\n else {\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.value;\n }\n }\n }\n return this.validCheck ? this.element.checked : !this.element.checked;\n };\n CheckBox.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) > -1) {\n var wrapper = this.getWrapper();\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].split(' '));\n }\n else if (key === 'title') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'style') {\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n frameSpan.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'disabled') {\n if (this.htmlAttributes[\"\" + key] === 'true') {\n this.setDisabled();\n }\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n /**\n * Click the CheckBox element\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to CheckBox\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Event()\n ], CheckBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], CheckBox.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"indeterminate\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], CheckBox.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], CheckBox.prototype, \"htmlAttributes\", void 0);\n CheckBox = __decorate([\n NotifyPropertyChanges\n ], CheckBox);\n return CheckBox;\n}(Component));\nexport { CheckBox };\n","import { detach, getUniqueID, rippleEffect, setValue, attributes } from '@syncfusion/ej2-base';\nimport { getValue, addClass, deleteObject } from '@syncfusion/ej2-base';\n/**\n * Initialize wrapper element for angular.\n *\n * @private\n *\n * @param {CreateElementArgs} createElement - Specifies created element args\n * @param {string} tag - Specifies tag name\n * @param {string} type - Specifies type name\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} WRAPPER - Specifies wrapper element\n * @param {string} role - Specifies role\n * @returns {HTMLInputElement} - Input Element\n */\nexport function wrapperInitialize(createElement, tag, type, element, WRAPPER, role) {\n var input = element;\n if (element.tagName === tag) {\n var ejInstance = getValue('ej2_instances', element);\n input = createElement('input', { attrs: { 'type': type } });\n var props = ['change', 'cssClass', 'label', 'labelPosition', 'id'];\n for (var index = 0, len = element.attributes.length; index < len; index++) {\n if (props.indexOf(element.attributes[index].nodeName) === -1) {\n input.setAttribute(element.attributes[index].nodeName, element.attributes[index].nodeValue);\n }\n }\n attributes(element, { 'class': WRAPPER });\n element.appendChild(input);\n setValue('ej2_instances', ejInstance, input);\n deleteObject(element, 'ej2_instances');\n }\n return input;\n}\n/**\n * Get the text node.\n *\n * @param {HTMLElement} element - Specifies html element\n * @private\n * @returns {Node} - Text node.\n */\nexport function getTextNode(element) {\n var node;\n var childnode = element.childNodes;\n for (var i = 0; i < childnode.length; i++) {\n node = childnode[i];\n if (node.nodeType === 3) {\n return node;\n }\n }\n return null;\n}\n/**\n * Destroy the button components.\n *\n * @private\n * @param {Switch | CheckBox} ejInst - Specifies eJ2 Instance\n * @param {Element} wrapper - Specifies wrapper element\n * @param {string} tagName - Specifies tag name\n * @returns {void}\n */\nexport function destroy(ejInst, wrapper, tagName) {\n if (tagName === 'INPUT') {\n wrapper.parentNode.insertBefore(ejInst.element, wrapper);\n detach(wrapper);\n ejInst.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n ejInst.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n }\n}\n/**\n * Initialize control pre rendering.\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies proxy\n * @param {string} control - Specifies control\n * @param {string} wrapper - Specifies wrapper element\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} moduleName - Specifies module name\n * @returns {void}\n */\nexport function preRender(proxy, control, wrapper, element, moduleName) {\n element = wrapperInitialize(proxy.createElement, control, 'checkbox', element, wrapper, moduleName);\n proxy.element = element;\n if (proxy.element.getAttribute('type') !== 'checkbox') {\n proxy.element.setAttribute('type', 'checkbox');\n }\n if (!proxy.element.id) {\n proxy.element.id = getUniqueID('e-' + moduleName);\n }\n}\n/**\n * Creates CheckBox component UI with theming and ripple support.\n *\n * @private\n * @param {CreateElementArgs} createElement - Specifies Created Element args\n * @param {boolean} enableRipple - Specifies ripple effect\n * @param {CheckBoxUtilModel} options - Specifies Checkbox util Model\n * @returns {Element} - Checkbox Element\n */\nexport function createCheckBox(createElement, enableRipple, options) {\n if (enableRipple === void 0) { enableRipple = false; }\n if (options === void 0) { options = {}; }\n var wrapper = createElement('div', { className: 'e-checkbox-wrapper e-css' });\n if (options.cssClass) {\n addClass([wrapper], options.cssClass.split(' '));\n }\n if (options.enableRtl) {\n wrapper.classList.add('e-rtl');\n }\n if (enableRipple) {\n var rippleSpan = createElement('span', { className: 'e-ripple-container' });\n rippleEffect(rippleSpan, { isCenterRipple: true, duration: 400 });\n wrapper.appendChild(rippleSpan);\n }\n var frameSpan = createElement('span', { className: 'e-frame e-icons' });\n if (options.checked) {\n frameSpan.classList.add('e-check');\n }\n wrapper.appendChild(frameSpan);\n if (options.label) {\n var labelSpan = createElement('span', { className: 'e-label' });\n if (options.disableHtmlEncode) {\n labelSpan.textContent = options.label;\n }\n else {\n labelSpan.innerHTML = options.label;\n }\n wrapper.appendChild(labelSpan);\n }\n return wrapper;\n}\n/**\n * Handles ripple mouse.\n *\n * @private\n * @param {MouseEvent} e - Specifies mouse event\n * @param {Element} rippleSpan - Specifies Ripple span element\n * @returns {void}\n */\nexport function rippleMouseHandler(e, rippleSpan) {\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(e.type, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n}\n/**\n * Append hidden input to given element\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies Proxy\n * @param {Element} wrap - Specifies Wrapper ELement\n * @returns {void}\n */\nexport function setHiddenInput(proxy, wrap) {\n if (proxy.element.getAttribute('ejs-for')) {\n wrap.appendChild(proxy.createElement('input', {\n attrs: { 'name': proxy.name || proxy.element.name, 'value': 'false', 'type': 'hidden' }\n }));\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, rippleEffect, NotifyPropertyChanges, Property, closest } from '@syncfusion/ej2-base';\nimport { addClass, getInstance, getUniqueID, isRippleEnabled, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { detach, Event, EventHandler, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler } from './../common/common';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-radio-wrapper';\nvar ATTRIBUTES = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value'];\n/**\n * The RadioButton is a graphical user interface element that allows you to select one option from the choices.\n * It contains checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nvar RadioButton = /** @class */ (function (_super) {\n __extends(RadioButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {RadioButtonModel} options - Specifies Radio button model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function RadioButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n return _this;\n }\n RadioButton_1 = RadioButton;\n RadioButton.prototype.changeHandler = function (event) {\n this.checked = true;\n this.dataBind();\n var value = this.element.getAttribute('value');\n value = this.isVue && value ? this.element.value : this.value;\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n this.trigger('change', { value: value, event: event });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n event.stopPropagation();\n }\n };\n RadioButton.prototype.updateChange = function () {\n var input;\n var instance;\n var radioGrp = this.getRadioGroup();\n for (var i = 0; i < radioGrp.length; i++) {\n input = radioGrp[i];\n if (input !== this.element) {\n instance = getInstance(input, RadioButton_1);\n instance.checked = false;\n if (this.tagName === 'EJS-RADIOBUTTON') {\n instance.angularValue = this.value;\n }\n }\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n RadioButton.prototype.destroy = function () {\n var _this = this;\n var radioWrap = this.wrapper;\n _super.prototype.destroy.call(this);\n if (radioWrap) {\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (radioWrap.parentNode) {\n radioWrap.parentNode.insertBefore(this.element, radioWrap);\n }\n detach(radioWrap);\n this.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n radioWrap.removeAttribute(key);\n });\n radioWrap.innerHTML = '';\n }\n }\n };\n RadioButton.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n RadioButton.prototype.focusOutHandler = function () {\n var label = this.getLabel();\n if (label) {\n label.classList.remove('e-focus');\n }\n };\n RadioButton.prototype.getModuleName = function () {\n return 'radio';\n };\n /**\n * To get the value of selected radio button in a group.\n *\n * @method getSelectedValue\n * @returns {string} - Selected Value\n */\n RadioButton.prototype.getSelectedValue = function () {\n var input;\n var radioGrp = this.getRadioGroup();\n for (var i = 0, len = radioGrp.length; i < len; i++) {\n input = radioGrp[i];\n if (input.checked) {\n return input.value;\n }\n }\n return '';\n };\n RadioButton.prototype.getRadioGroup = function () {\n return document.querySelectorAll('input.e-radio[name=\"' + this.element.getAttribute('name') + '\"]');\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n RadioButton.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n RadioButton.prototype.getWrapper = function () {\n if (this.element) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.getLabel = function () {\n if (this.element) {\n return this.element.nextElementSibling;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n this.initWrapper();\n this.updateHtmlAttribute();\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n var value = this.element.getAttribute('value');\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n if (this.isVue ? this.value && type !== 'boolean' && !value : this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.element.checked = true;\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n RadioButton.prototype.initWrapper = function () {\n var rippleSpan;\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', { className: WRAPPER });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n wrapper.appendChild(this.element);\n wrapper.appendChild(label);\n if (isRippleEnabled) {\n rippleSpan = this.createElement('span', { className: (RIPPLE) });\n label.appendChild(rippleSpan);\n rippleEffect(rippleSpan, {\n duration: 400,\n isCenterRipple: true\n });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n label.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n RadioButton.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getLabel().classList.add('e-focus');\n }\n };\n RadioButton.prototype.labelMouseDownHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n RadioButton.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.labelMouseUpHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n if (this.initialCheckedValue) {\n attributes(this.element, { 'checked': 'true' });\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {RadioButtonModel} newProp - Specifies New Properties\n * @param {RadioButtonModel} oldProp - Specifies Old Properties\n * @returns {void}\n */\n RadioButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.getWrapper();\n var label = this.getLabel();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n if (newProp.checked) {\n this.updateChange();\n }\n this.element.checked = newProp.checked;\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n label.classList.add(RTL);\n }\n else {\n label.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition':\n if (newProp.labelPosition === 'Before') {\n label.classList.add('e-right');\n }\n else {\n label.classList.remove('e-right');\n }\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n var type = typeof this.htmlAttributes.value;\n if (!isNullOrUndefined(this.htmlAttributes) && (this.htmlAttributes.value || type === 'boolean' && !this.htmlAttributes.value)) {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttribute();\n break;\n }\n }\n };\n /**\n * Initialize checked Property, Angular and React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-RADIOBUTTON', 'radio', element, WRAPPER, 'radio');\n this.element = element;\n if (this.element.getAttribute('type') !== 'radio') {\n this.element.setAttribute('type', 'radio');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.tagName === 'EJS-RADIOBUTTON') {\n var formControlName = this.element.getAttribute('formcontrolname');\n if (formControlName) {\n this.setProperties({ 'name': formControlName }, true);\n this.element.setAttribute('name', formControlName);\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n RadioButton.prototype.setDisabled = function () {\n this.element.disabled = true;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RadioButton.prototype.setText = function (text) {\n var label = this.getLabel();\n var textLabel = label.getElementsByClassName(LABEL)[0];\n if (textLabel) {\n textLabel.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n textLabel = this.createElement('span', { className: LABEL, innerHTML: text });\n label.appendChild(textLabel);\n }\n if (this.labelPosition === 'Before') {\n this.getLabel().classList.add('e-right');\n }\n else {\n this.getLabel().classList.remove('e-right');\n }\n };\n RadioButton.prototype.updateHtmlAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (ATTRIBUTES.indexOf(key) > -1) {\n var wrapper = this.element.parentElement;\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ').trim().split(' '));\n }\n else if (key === 'title' || key === 'style') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n RadioButton.prototype.unWireEvents = function () {\n var label = this.wrapper;\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n var rippleLabel = label.getElementsByTagName('label')[0];\n if (rippleLabel) {\n EventHandler.remove(rippleLabel, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n RadioButton.prototype.wireEvents = function () {\n var label = this.getLabel();\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var rippleLabel = label.getElementsByClassName(LABEL)[0];\n if (rippleLabel) {\n EventHandler.add(rippleLabel, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n };\n /**\n * Click the RadioButton element\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to RadioButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.focusIn = function () {\n this.element.focus();\n };\n var RadioButton_1;\n __decorate([\n Event()\n ], RadioButton.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RadioButton.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RadioButton.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], RadioButton.prototype, \"htmlAttributes\", void 0);\n RadioButton = RadioButton_1 = __decorate([\n NotifyPropertyChanges\n ], RadioButton);\n return RadioButton;\n}(Component));\nexport { RadioButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-unused-expressions */\nimport { Component, EventHandler, Internationalization } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { cldrData, getDefaultDateObject, rippleEffect } from '@syncfusion/ej2-base';\nimport { removeClass, detach, closest, addClass, attributes } from '@syncfusion/ej2-base';\nimport { getValue, getUniqueID, extend, Browser } from '@syncfusion/ej2-base';\nimport { Property, Event, isNullOrUndefined, throwError } from '@syncfusion/ej2-base';\n//class constant defination.\nvar OTHERMONTH = 'e-other-month';\nvar OTHERDECADE = 'e-other-year';\nvar ROOT = 'e-calendar';\nvar DEVICE = 'e-device';\nvar HEADER = 'e-header';\nvar RTL = 'e-rtl';\nvar CONTENT = 'e-content';\nvar YEAR = 'e-year';\nvar MONTH = 'e-month';\nvar DECADE = 'e-decade';\nvar ICON = 'e-icons';\nvar PREVICON = 'e-prev';\nvar NEXTICON = 'e-next';\nvar PREVSPAN = 'e-date-icon-prev';\nvar NEXTSPAN = 'e-date-icon-next ';\nvar ICONCONTAINER = 'e-icon-container';\nvar DISABLED = 'e-disabled';\nvar OVERLAY = 'e-overlay';\nvar WEEKEND = 'e-weekend';\nvar WEEKNUMBER = 'e-week-number';\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar OTHERMONTHROW = 'e-month-hide';\nvar TODAY = 'e-today';\nvar TITLE = 'e-title';\nvar LINK = 'e-day';\nvar CELL = 'e-cell';\nvar WEEKHEADER = 'e-week-header';\nvar ZOOMIN = 'e-zoomin';\nvar FOOTER = 'e-footer-container';\nvar BTN = 'e-btn';\nvar FLAT = 'e-flat';\nvar CSS = 'e-css';\nvar PRIMARY = 'e-primary';\nvar DAYHEADERLONG = 'e-calendar-day-header-lg';\nvar dayMilliSeconds = 86400000;\nvar minutesMilliSeconds = 60000;\n/**\n *\n * @private\n */\nvar CalendarBase = /** @class */ (function (_super) {\n __extends(CalendarBase, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarBaseModel} options - Specifies the CalendarBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function CalendarBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.effect = '';\n _this.isPopupClicked = false;\n _this.isDateSelected = true;\n _this.isTodayClicked = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.previousDates = false;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.render = function () {\n this.rangeValidation(this.min, this.max);\n this.calendarEleCopy = this.element.cloneNode(true);\n if (this.calendarMode === 'Islamic') {\n if (+(this.min.setSeconds(0)) === +new Date(1900, 0, 1, 0, 0, 0)) {\n this.min = new Date(1944, 2, 18);\n }\n if (+this.max === +new Date(2099, 11, 31)) {\n this.max = new Date(2069, 10, 16);\n }\n }\n this.globalize = new Internationalization(this.locale);\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.todayDisabled = false;\n this.todayDate = new Date(new Date().setHours(0, 0, 0, 0));\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add(ROOT);\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.element.classList.add(DEVICE);\n }\n attributes(this.element, {\n 'data-role': 'calendar'\n });\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(ROOT);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.calendarElement.classList.add(DEVICE);\n }\n attributes(this.calendarElement, {\n 'data-role': 'calendar'\n });\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.createHeader();\n this.createContent();\n this.wireEvents();\n };\n CalendarBase.prototype.rangeValidation = function (min, max) {\n if (isNullOrUndefined(min)) {\n this.setProperties({ min: new Date(1900, 0, 1) }, true);\n }\n if (isNullOrUndefined(max)) {\n this.setProperties({ max: new Date(2099, 11, 31) }, true);\n }\n };\n CalendarBase.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n altUpArrow: 'alt+uparrow',\n spacebar: 'space',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow'\n };\n return this.defaultKeyConfigs;\n };\n CalendarBase.prototype.validateDate = function (value) {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.currentDate = this.currentDate ? this.currentDate : new Date(new Date().setHours(0, 0, 0, 0));\n if (!isNullOrUndefined(value) && this.min <= this.max && value >= this.min && value <= this.max) {\n this.currentDate = new Date(this.checkValue(value));\n }\n };\n CalendarBase.prototype.setOverlayIndex = function (popupWrapper, popupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(popupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(popupElement.style.zIndex, 10) ? parseInt(popupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n CalendarBase.prototype.minMaxUpdate = function (value) {\n if (!(+this.min <= +this.max)) {\n this.setProperties({ min: this.min }, true);\n addClass([this.element], OVERLAY);\n }\n else {\n removeClass([this.element], OVERLAY);\n }\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (+this.min <= +this.max && value && +value <= +this.max && +value >= +this.min) {\n this.currentDate = new Date(this.checkValue(value));\n }\n else {\n if (+this.min <= +this.max && !value && +this.currentDate > +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n else {\n if (+this.currentDate < +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n }\n }\n };\n CalendarBase.prototype.createHeader = function () {\n var ariaPrevAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'previous month'\n };\n var ariaNextAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'next month'\n };\n var ariaTitleAttrs = {\n 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'title'\n };\n this.headerElement = this.createElement('div', { className: HEADER });\n var iconContainer = this.createElement('div', { className: ICONCONTAINER });\n this.previousIcon = this.createElement('button', { className: '' + PREVICON, attrs: { type: 'button' } });\n rippleEffect(this.previousIcon, {\n duration: 400,\n selector: '.e-prev',\n isCenterRipple: true\n });\n attributes(this.previousIcon, ariaPrevAttrs);\n this.nextIcon = this.createElement('button', { className: '' + NEXTICON, attrs: { type: 'button' } });\n rippleEffect(this.nextIcon, {\n selector: '.e-next',\n duration: 400,\n isCenterRipple: true\n });\n if (this.getModuleName() === 'daterangepicker') {\n attributes(this.previousIcon, { tabIndex: '-1' });\n attributes(this.nextIcon, { tabIndex: '-1' });\n }\n attributes(this.nextIcon, ariaNextAttrs);\n this.headerTitleElement = this.createElement('div', { className: '' + LINK + ' ' + TITLE });\n attributes(this.headerTitleElement, ariaTitleAttrs);\n this.headerElement.appendChild(this.headerTitleElement);\n this.previousIcon.appendChild(this.createElement('span', { className: '' + PREVSPAN + ' ' + ICON }));\n this.nextIcon.appendChild(this.createElement('span', { className: '' + NEXTSPAN + ' ' + ICON }));\n iconContainer.appendChild(this.previousIcon);\n iconContainer.appendChild(this.nextIcon);\n this.headerElement.appendChild(iconContainer);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.headerElement);\n }\n else {\n this.calendarElement.appendChild(this.headerElement);\n }\n this.adjustLongHeaderSize();\n };\n CalendarBase.prototype.createContent = function () {\n this.contentElement = this.createElement('div', { className: CONTENT });\n this.table = this.createElement('table', { attrs: { tabIndex: '0', 'role': 'grid', 'aria-activedescendant': '', 'aria-labelledby': this.element.id } });\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.contentElement);\n }\n else {\n this.calendarElement.appendChild(this.contentElement);\n }\n this.contentElement.appendChild(this.table);\n this.createContentHeader();\n this.createContentBody();\n if (this.showTodayButton) {\n this.createContentFooter();\n }\n };\n CalendarBase.prototype.getCultureValues = function () {\n var culShortNames = [];\n var cldrObj;\n var dayFormat = 'days.stand-alone.' + this.dayHeaderFormat.toLowerCase();\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrObj = (getValue(dayFormat, getDefaultDateObject()));\n }\n else {\n cldrObj = (this.getCultureObjects(cldrData, '' + this.locale));\n }\n if (!isNullOrUndefined(cldrObj)) {\n for (var _i = 0, _a = Object.keys(cldrObj); _i < _a.length; _i++) {\n var obj = _a[_i];\n culShortNames.push(getValue(obj, cldrObj));\n }\n }\n return culShortNames;\n };\n CalendarBase.prototype.toCapitalize = function (text) {\n return !isNullOrUndefined(text) && text.length ? text[0].toUpperCase() + text.slice(1) : text;\n };\n CalendarBase.prototype.createContentHeader = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.element.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n var daysCount = 6;\n var html = '';\n if (this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: 0 }, true);\n }\n this.tableHeadElement = this.createElement('thead', { className: WEEKHEADER });\n if (this.weekNumber) {\n html += '';\n if (this.getModuleName() === 'calendar') {\n addClass([this.element], '' + WEEKNUMBER);\n }\n else {\n addClass([this.calendarElement], '' + WEEKNUMBER);\n }\n }\n // eslint-disable-next-line max-len\n var shortNames = this.getCultureValues().length > 0 && this.getCultureValues() ? this.shiftArray(((this.getCultureValues().length > 0 && this.getCultureValues())), this.firstDayOfWeek) : null;\n if (!isNullOrUndefined(shortNames)) {\n for (var days = 0; days <= daysCount; days++) {\n html += '' + this.toCapitalize(shortNames[days]) + '';\n }\n }\n html = '' + html + '';\n this.tableHeadElement.innerHTML = html;\n this.table.appendChild(this.tableHeadElement);\n };\n CalendarBase.prototype.createContentBody = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content tbody')[0])) {\n detach(this.element.querySelectorAll('.e-content tbody')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content tbody')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content tbody')[0]);\n }\n }\n switch (this.start) {\n case 'Year':\n this.renderYears();\n break;\n case 'Decade':\n this.renderDecades();\n break;\n default:\n this.renderMonths();\n }\n };\n CalendarBase.prototype.updateFooter = function () {\n this.todayElement.textContent = this.l10.getConstant('today');\n this.todayElement.setAttribute('aria-label', this.l10.getConstant('today'));\n };\n CalendarBase.prototype.createContentFooter = function () {\n if (this.showTodayButton) {\n var minimum = new Date(+this.min);\n var maximum = new Date(+this.max);\n var l10nLocale = { today: 'Today' };\n this.globalize = new Internationalization(this.locale);\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n this.todayElement = this.createElement('button', { attrs: { role: 'button' } });\n rippleEffect(this.todayElement);\n this.updateFooter();\n addClass([this.todayElement], [BTN, TODAY, FLAT, PRIMARY, CSS]);\n if ((!(+new Date(minimum.setHours(0, 0, 0, 0)) <= +this.todayDate &&\n +this.todayDate <= +new Date(maximum.setHours(0, 0, 0, 0)))) || (this.todayDisabled)) {\n addClass([this.todayElement], DISABLED);\n }\n this.footer = this.createElement('div', { className: FOOTER });\n this.footer.appendChild(this.todayElement);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (!this.todayElement.classList.contains(DISABLED)) {\n EventHandler.add(this.todayElement, 'click', this.todayButtonClick, this);\n }\n }\n };\n CalendarBase.prototype.wireEvents = function (id, ref, keyConfig, moduleName) {\n EventHandler.add(this.headerTitleElement, 'click', this.navigateTitle, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n if (this.getModuleName() === 'calendar') {\n this.keyboardModule = new KeyboardEvents(this.element, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.calendarElement, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n };\n CalendarBase.prototype.dateWireEvents = function (id, ref, keyConfig, moduleName) {\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, keyConfig);\n this.serverModuleName = moduleName;\n };\n CalendarBase.prototype.todayButtonClick = function (e, value, isCustomDate) {\n if (this.showTodayButton) {\n if (this.currentView() === this.depth) {\n this.effect = '';\n }\n else {\n this.effect = 'e-zoomin';\n }\n if (this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.navigateTo(this.depth, new Date(this.checkValue(value)), isCustomDate);\n }\n else {\n this.navigateTo('Month', new Date(this.checkValue(value)), isCustomDate);\n }\n }\n };\n CalendarBase.prototype.resetCalendar = function () {\n this.calendarElement && detach(this.calendarElement);\n this.tableBodyElement && detach(this.tableBodyElement);\n this.table && detach(this.table);\n this.tableHeadElement && detach(this.tableHeadElement);\n this.nextIcon && detach(this.nextIcon);\n this.previousIcon && detach(this.previousIcon);\n this.footer && detach(this.footer);\n this.todayElement = null;\n this.renderDayCellArgs = null;\n this.calendarElement = this.tableBodyElement = this.footer = this.tableHeadElement =\n this.nextIcon = this.previousIcon = this.table = null;\n };\n CalendarBase.prototype.keyActionHandle = function (e, value, multiSelection) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate;\n if (multiSelection) {\n if (!isNullOrUndefined(focusedDate) && +value === parseInt(focusedDate.getAttribute('id').split('_')[0], 10)) {\n selectedDate = focusedDate;\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n var view = this.getViewNumber(this.currentView());\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n this.effect = '';\n switch (e.action) {\n case 'moveLeft':\n this.keyboardNavigate(-1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveRight':\n this.keyboardNavigate(1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveUp':\n if (view === 0) {\n this.keyboardNavigate(-7, view, e, this.max, this.min); // move the current date to the previous seven days.\n }\n else {\n this.keyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n e.preventDefault();\n break;\n case 'moveDown':\n if (view === 0) {\n this.keyboardNavigate(7, view, e, this.max, this.min);\n }\n else {\n this.keyboardNavigate(4, view, e, this.max, this.min);\n }\n e.preventDefault();\n break;\n case 'select':\n if (e.target === this.todayElement) {\n this.todayButtonClick(e, value);\n }\n else {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : selectedDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED)) {\n if (levelRestrict) {\n // eslint-disable-next-line radix\n var d = new Date(parseInt('' + (element).id, 0));\n this.selectDate(e, d, (element));\n }\n else {\n this.contentClick(null, --view, (element), value);\n }\n }\n }\n break;\n case 'controlUp':\n this.title();\n e.preventDefault();\n break;\n case 'controlDown':\n if (!isNullOrUndefined(focusedDate) && !levelRestrict || !isNullOrUndefined(selectedDate) && !levelRestrict) {\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n e.preventDefault();\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'pageUp':\n this.addMonths(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'pageDown':\n this.addMonths(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageUp':\n this.addYears(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageDown':\n this.addYears(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'controlHome':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 0, 1));\n e.preventDefault();\n break;\n case 'controlEnd':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 11, 31));\n e.preventDefault();\n break;\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.keyboardNavigate = function (number, currentView, e, max, min) {\n var date = new Date(this.checkValue(this.currentDate));\n switch (currentView) {\n case 2:\n this.addYears(this.currentDate, number);\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n case 1:\n this.addMonths(this.currentDate, number);\n if (this.calendarMode === 'Gregorian') {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n else {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n break;\n case 0:\n this.addDay(this.currentDate, number, e, max, min);\n if (this.isMinMaxRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n }\n };\n /**\n * Initialize the event handler\n *\n * @param {Date} value - Specifies value of date.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.preRender = function (value) {\n var _this = this;\n this.navigatePreviousHandler = this.navigatePrevious.bind(this);\n this.navigateNextHandler = this.navigateNext.bind(this);\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.navigateHandler = function (e) {\n _this.triggerNavigate(e);\n };\n };\n CalendarBase.prototype.minMaxDate = function (localDate) {\n var currentDate = new Date(new Date(+localDate).setHours(0, 0, 0, 0));\n var minDate = new Date(new Date(+this.min).setHours(0, 0, 0, 0));\n var maxDate = new Date(new Date(+this.max).setHours(0, 0, 0, 0));\n if (+currentDate === +minDate || +currentDate === +maxDate) {\n if (+localDate < +this.min) {\n localDate = new Date(+this.min);\n }\n if (+localDate > +this.max) {\n localDate = new Date(+this.max);\n }\n }\n return localDate;\n };\n CalendarBase.prototype.renderMonths = function (e, value, isCustomDate) {\n var numCells = this.weekNumber ? 8 : 7;\n var tdEles;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(this.currentDate, value, null, null, isCustomDate, e);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n this.createContentHeader();\n if (this.calendarMode === 'Gregorian') {\n this.renderTemplate(tdEles, numCells, MONTH, e, value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(tdEles, numCells, MONTH, e, value);\n }\n };\n CalendarBase.prototype.renderDays = function (currentDate, value, multiSelection, values, isTodayDate, e) {\n var tdEles = [];\n var cellsCount = 42;\n var todayDate = isTodayDate ? new Date(+currentDate) : this.getDate(new Date(), this.timezone);\n var localDate = new Date(this.checkValue(currentDate));\n var minMaxDate;\n var currentMonth = localDate.getMonth();\n this.titleUpdate(currentDate, 'days');\n var d = localDate;\n localDate = new Date(d.getFullYear(), d.getMonth(), 0, d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());\n while (localDate.getDay() !== this.firstDayOfWeek) {\n this.setStartDate(localDate, -1 * dayMilliSeconds);\n }\n for (var day = 0; day < cellsCount; ++day) {\n var weekEle = this.createElement('td', { className: CELL });\n var weekAnchor = this.createElement('span');\n if (day % 7 === 0 && this.weekNumber) {\n // 6 days are added to get Last day of the week and 3 days are added to get middle day of the week.\n var numberOfDays = this.weekRule === 'FirstDay' ? 6 : (this.weekRule === 'FirstFourDayWeek' ? 3 : 0);\n var finalDate = new Date(localDate.getFullYear(), localDate.getMonth(), (localDate.getDate() + numberOfDays));\n weekAnchor.textContent = '' + this.getWeek(finalDate);\n weekEle.appendChild(weekAnchor);\n addClass([weekEle], '' + WEEKNUMBER);\n tdEles.push(weekEle);\n }\n minMaxDate = new Date(+localDate);\n localDate = this.minMaxDate(localDate);\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full' };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var tdEle = this.dayCell(localDate);\n var title = this.globalize.formatDate(localDate, { type: 'date', skeleton: 'full' });\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, { format: 'd', type: 'date', skeleton: 'yMd' });\n var disabled = (this.min > localDate) || (this.max < localDate);\n if (disabled) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n }\n else {\n dayLink.setAttribute('title', '' + title);\n }\n if (currentMonth !== localDate.getMonth()) {\n addClass([tdEle], OTHERMONTH);\n }\n if (localDate.getDay() === 0 || localDate.getDay() === 6) {\n addClass([tdEle], WEEKEND);\n }\n tdEle.appendChild(dayLink);\n this.renderDayCellArgs = {\n date: localDate,\n isDisabled: false,\n element: tdEle,\n isOutOfRange: disabled\n };\n var argument = this.renderDayCellArgs;\n this.renderDayCellEvent(argument);\n if (argument.isDisabled) {\n var selectDate = new Date(this.checkValue(value));\n var argsDate = new Date(this.checkValue(argument.date));\n if (multiSelection) {\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n var localDateString = +new Date(this.globalize.formatDate(argument.date, { type: 'date', skeleton: 'yMd' }));\n var tempDateString = +new Date(this.globalize.formatDate(values[index], { type: 'date', skeleton: 'yMd' }));\n if (localDateString === tempDateString) {\n values.splice(index, 1);\n index = -1;\n }\n }\n }\n }\n else if (selectDate && +selectDate === +argsDate) {\n this.setProperties({ value: null }, true);\n }\n }\n if (this.renderDayCellArgs.isDisabled && !tdEle.classList.contains(SELECTED)) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n if (+this.renderDayCellArgs.date === +this.todayDate) {\n this.todayDisabled = true;\n }\n }\n var otherMnthBool = tdEle.classList.contains(OTHERMONTH);\n var disabledCls = tdEle.classList.contains(DISABLED);\n if (!disabledCls) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n // to set the value as null while setting the disabled date onProperty change.\n // if (args.isDisabled && +this.value === +args.date) {\n // this.setProperties({ value: null }, true);\n // }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentTarget = void 0;\n if (!isNullOrUndefined(e) && e.type === 'click') {\n currentTarget = e.currentTarget;\n }\n if (multiSelection && !isNullOrUndefined(values) && !disabledCls) {\n for (var tempValue = 0; tempValue < values.length; tempValue++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(localDate, formatOptions);\n var tempDateString = this.globalize.formatDate(values[tempValue], formatOptions);\n if ((localDateString === tempDateString && this.getDateVal(localDate, values[tempValue]))\n || (this.getDateVal(localDate, value))) {\n addClass([tdEle], SELECTED);\n }\n if (!isNullOrUndefined(currentTarget) && currentTarget.innerText === tdEle.innerText &&\n this.previousDates && tdEle.classList.contains(SELECTED) && currentTarget.classList.contains(SELECTED)) {\n removeClass([tdEle], SELECTED);\n this.previousDates = false;\n var copyValues = this.copyValues(values);\n for (var i = 0; i < copyValues.length; i++) {\n var type_1 = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions_1 = { format: null, type: 'date', skeleton: 'short', calendar: type_1 };\n var localDateString_1 = this.globalize.formatDate(date, formatOptions_1);\n var tempDateString_1 = this.globalize.formatDate(copyValues[i], formatOptions_1);\n if (localDateString_1 === tempDateString_1) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n values.splice(index, 1);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n if (values.length <= 0) {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n else if (!disabledCls && this.getDateVal(localDate, value)) {\n addClass([tdEle], SELECTED);\n }\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n if (!isNullOrUndefined(date) && date.getFullYear() === todayDate.getFullYear() && date.getMonth() === todayDate.getMonth()\n && date.getDate() === todayDate.getDate()) {\n addClass([tdEle], TODAY);\n }\n tdEles.push(this.renderDayCellArgs.element);\n localDate = new Date(+minMaxDate);\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n return tdEles;\n };\n CalendarBase.prototype.updateFocus = function (otherMonth, disabled, localDate, tableElement, currentDate) {\n if (currentDate.getDate() === localDate.getDate() && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n else {\n // eslint-disable-next-line radix\n if (currentDate >= this.max && parseInt(tableElement.id, 0) === +this.max && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n // eslint-disable-next-line radix\n if (currentDate <= this.min && parseInt(tableElement.id, 0) === +this.min && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n }\n };\n CalendarBase.prototype.renderYears = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var tdEles = [];\n var valueUtil = isNullOrUndefined(value);\n var curDate = new Date(this.checkValue(this.currentDate));\n var mon = curDate.getMonth();\n var yr = curDate.getFullYear();\n var localDate = curDate;\n var curYrs = localDate.getFullYear();\n var minYr = new Date(this.checkValue(this.min)).getFullYear();\n var minMonth = new Date(this.checkValue(this.min)).getMonth();\n var maxYr = new Date(this.checkValue(this.max)).getFullYear();\n var maxMonth = new Date(this.checkValue(this.max)).getMonth();\n localDate.setMonth(0);\n this.titleUpdate(this.currentDate, 'months');\n localDate.setDate(1);\n for (var month = 0; month < 12; ++month) {\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n var localMonth = (value && (value).getMonth() === localDate.getMonth());\n var select = (value && (value).getFullYear() === yr && localMonth);\n dayLink.textContent = this.toCapitalize(this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'MMM'\n }));\n if ((this.min && (curYrs < minYr || (month < minMonth && curYrs === minYr))) || (this.max && (curYrs > maxYr || (month > maxMonth && curYrs >= maxYr)))) {\n addClass([tdEle], DISABLED);\n }\n else if (!valueUtil && select) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getMonth() === mon && this.currentDate.getMonth() === mon) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n localDate.setDate(1);\n localDate.setMonth(localDate.getMonth() + 1);\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, YEAR, e, value);\n };\n CalendarBase.prototype.renderDecades = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var yearCell = 12;\n var tdEles = [];\n var localDate = new Date(this.checkValue(this.currentDate));\n localDate.setMonth(0);\n localDate.setDate(1);\n var localYr = localDate.getFullYear();\n var startYr = new Date(localDate.setFullYear((localYr - localYr % 10)));\n var endYr = new Date(localDate.setFullYear((localYr - localYr % 10 + (10 - 1))));\n var startFullYr = startYr.getFullYear();\n var endFullYr = endYr.getFullYear();\n var startHdrYr = this.globalize.formatDate(startYr, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n var endHdrYr = this.globalize.formatDate(endYr, { format: null, type: 'dateTime', skeleton: 'y' });\n this.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);\n var start = new Date(localYr - (localYr % 10) - 1, 0, 1);\n var startYear = start.getFullYear();\n for (var rowIterator = 0; rowIterator < yearCell; ++rowIterator) {\n var year = startYear + rowIterator;\n localDate.setFullYear(year);\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n if ((year < startFullYr) || (year > endFullYr)) {\n addClass([tdEle], OTHERDECADE);\n if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n }\n else if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n else if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getFullYear() === this.currentDate.getFullYear() && !tdEle.classList.contains(DISABLED)) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, 'e-decade', e, value);\n };\n CalendarBase.prototype.dayCell = function (localDate) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { skeleton: 'full', type: 'dateTime', calendar: type };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var value;\n if (!isNullOrUndefined(date)) {\n value = date.valueOf();\n }\n var attrs = {\n className: CELL, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false' }\n };\n return this.createElement('td', attrs);\n };\n CalendarBase.prototype.firstDay = function (date) {\n var collection = this.currentView() !== 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '');\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.lastDay = function (date, view) {\n var lastDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n if (view !== 2) {\n var timeOffset = Math.abs(lastDate.getTimezoneOffset() - this.firstDay(date).getTimezoneOffset());\n if (timeOffset) {\n lastDate.setHours(this.firstDay(date).getHours() + (timeOffset / 60));\n }\n return this.findLastDay(lastDate);\n }\n else {\n return this.findLastDay(this.firstDay(lastDate));\n }\n };\n CalendarBase.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n CalendarBase.prototype.findLastDay = function (date) {\n var collection = this.currentView() === 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '');\n if (collection.length) {\n for (var i = collection.length - 1; i >= 0; i--) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.removeTableHeadElement = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.renderTemplate = function (elements, count, classNm, e, value) {\n var view = this.getViewNumber(this.currentView());\n var trEle;\n this.tableBodyElement = this.createElement('tbody');\n this.table.appendChild(this.tableBodyElement);\n removeClass([this.contentElement, this.headerElement], [MONTH, DECADE, YEAR]);\n addClass([this.contentElement, this.headerElement], [classNm]);\n var weekNumCell = 41;\n var numberCell = 35;\n var otherMonthCell = 6;\n var row = count;\n var rowIterator = 0;\n for (var dayCell = 0; dayCell < elements.length / count; ++dayCell) {\n trEle = this.createElement('tr');\n for (rowIterator = 0 + rowIterator; rowIterator < row; rowIterator++) {\n if (!elements[rowIterator].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowIterator].children[0])) {\n addClass([elements[rowIterator].children[0]], [LINK]);\n rippleEffect(elements[rowIterator].children[0], {\n duration: 600,\n isCenterRipple: true\n });\n }\n trEle.appendChild(elements[rowIterator]);\n if (this.weekNumber && rowIterator === otherMonthCell + 1 && elements[otherMonthCell + 1].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (!this.weekNumber && rowIterator === otherMonthCell && elements[otherMonthCell].\n classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (this.weekNumber) {\n if (rowIterator === weekNumCell && elements[weekNumCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n else {\n if (rowIterator === numberCell && elements[numberCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n }\n row = row + count;\n rowIterator = rowIterator + 0;\n this.tableBodyElement.appendChild(trEle);\n }\n this.table.querySelector('tbody').className = this.effect;\n if (this.calendarMode === 'Gregorian') {\n this.iconHandler();\n }\n else {\n this.islamicModule.islamicIconHandler();\n }\n if (view !== this.getViewNumber(this.currentView()) || (view === 0 && view !== this.getViewNumber(this.currentView()))) {\n this.navigateHandler(e);\n }\n this.setAriaActiveDescendant();\n };\n CalendarBase.prototype.clickHandler = function (e, value) {\n this.clickEventEmitter(e);\n var eve = e.currentTarget;\n var view = this.getViewNumber(this.currentView());\n if (eve.classList.contains(OTHERMONTH)) {\n this.contentClick(e, 0, null, value);\n }\n else if (view === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.contentClick(e, 1, null, value);\n }\n else if (2 === view) {\n this.contentClick(e, 1, null, value);\n }\n else if (!eve.classList.contains(OTHERMONTH) && view === 0) {\n this.selectDate(e, this.getIdValue(e, null), null);\n }\n else {\n this.contentClick(e, 0, eve, value);\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n // Content click event handler required for extended components\n CalendarBase.prototype.clickEventEmitter = function (e) {\n e.preventDefault();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.contentClick = function (e, view, element, value) {\n var currentView = this.getViewNumber(this.currentView());\n var d = this.getIdValue(e, element);\n switch (view) {\n case 0:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n detach(this.tableBodyElement);\n this.currentDate = d;\n this.effect = ZOOMIN;\n this.renderMonths(e);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setMonth(d.getMonth());\n if (d.getMonth() > 0 && this.currentDate.getMonth() !== d.getMonth()) {\n this.currentDate.setDate(0);\n }\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.currentDate = d;\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n break;\n case 1:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.selectDate(e, d, null);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.islamicPreviousHeader = this.headerElement.textContent;\n var islamicDate = this.islamicModule.getIslamicDate(d);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, islamicDate.month, 1);\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n }\n };\n CalendarBase.prototype.switchView = function (view, e, multiSelection, isCustomDate) {\n switch (view) {\n case 0:\n detach(this.tableBodyElement);\n this.renderMonths(e, null, isCustomDate);\n break;\n case 1:\n detach(this.tableBodyElement);\n this.renderYears(e);\n break;\n case 2:\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n };\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n CalendarBase.prototype.getModuleName = function () {\n return 'calendar';\n };\n /**\n *\n * @returns {void}\n\n */\n CalendarBase.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n return modules;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n CalendarBase.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarBaseModel} oldProp - Returns the previous property value of the component.\n * @param {boolean} multiSelection - - Specifies whether multiple date selection is enabled or not.\n * @param {Date[]} values - Specifies the dates.\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.onPropertyChanged = function (newProp, oldProp, multiSelection, values) {\n this.effect = '';\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n if (newProp.enableRtl) {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add('e-rtl');\n }\n else {\n this.calendarElement.classList.add('e-rtl');\n }\n }\n else {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.remove('e-rtl');\n }\n else {\n this.calendarElement.classList.remove('e-rtl');\n }\n }\n break;\n case 'dayHeaderFormat':\n this.getCultureValues();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n }\n this.adjustLongHeaderSize();\n break;\n case 'min':\n case 'max':\n this.rangeValidation(this.min, this.max);\n if (prop === 'min') {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n }\n else {\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n }\n this.setProperties({ start: this.currentView() }, true);\n if (this.tableBodyElement) {\n detach(this.tableBodyElement);\n }\n this.minMaxUpdate();\n if (multiSelection) {\n this.validateValues(multiSelection, values);\n }\n if (this.getModuleName() !== 'datepicker') {\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentBody();\n }\n if ((this.todayDate < this.min || this.max < this.todayDate) && (this.footer) && (this.todayElement)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n else {\n if ((this.footer) && (this.todayElement) && this.todayElement.classList.contains('e-disabled')) {\n removeClass([this.todayElement], DISABLED);\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n }\n break;\n case 'start':\n case 'depth':\n case 'weekNumber':\n case 'firstDayOfWeek':\n case 'weekRule':\n this.checkView();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n this.l10.setLocale(this.locale);\n this.updateFooter();\n break;\n case 'showTodayButton':\n if (newProp.showTodayButton) {\n this.createContentFooter();\n }\n else {\n if (!isNullOrUndefined(this.todayElement) && !isNullOrUndefined(this.footer)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = undefined;\n }\n }\n this.setProperties({ showTodayButton: newProp.showTodayButton }, true);\n break;\n }\n }\n };\n /**\n * values property updated with considered disabled dates of the calendar.\n *\n * @param {boolean} multiSelection - Specifies whether multiple date selection is enabled.\n * @param {Date[]} values - Specifies the dates to validate.\n * @returns {void}\n */\n CalendarBase.prototype.validateValues = function (multiSelection, values) {\n if (multiSelection && !isNullOrUndefined(values) && values.length > 0) {\n var copyValues = this.copyValues(values);\n for (var skipIndex = 0; skipIndex < copyValues.length; skipIndex++) {\n var tempValue = copyValues[skipIndex];\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var tempValueString = void 0;\n if (this.calendarMode === 'Gregorian') {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'date', skeleton: 'yMd' });\n }\n else {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'dateTime', skeleton: 'full', calendar: 'islamic' });\n }\n var minFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var minStringValue = this.globalize.formatDate(this.min, minFormatOption);\n var minString = minStringValue;\n var maxFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var maxStringValue = this.globalize.formatDate(this.max, maxFormatOption);\n var maxString = maxStringValue;\n if (+new Date(tempValueString) < +new Date(minString) ||\n +new Date(tempValueString) > +new Date(maxString)) {\n copyValues.splice(skipIndex, 1);\n skipIndex = -1;\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n };\n CalendarBase.prototype.setValueUpdate = function () {\n if (!isNullOrUndefined(this.tableBodyElement)) {\n detach(this.tableBodyElement);\n this.setProperties({ start: this.currentView() }, true);\n this.createContentBody();\n }\n };\n CalendarBase.prototype.copyValues = function (values) {\n var copyValues = [];\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n copyValues.push(new Date(+values[index]));\n }\n }\n return copyValues;\n };\n CalendarBase.prototype.titleUpdate = function (date, view) {\n var globalize = new Internationalization(this.locale);\n var dayFormatOptions;\n var monthFormatOptions;\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n if (this.calendarMode === 'Gregorian') {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', skeleton: 'yMMMM', calendar: type });\n monthFormatOptions = globalize.formatDate(date, {\n format: null, type: 'dateTime', skeleton: 'y', calendar: type\n });\n }\n else {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'MMMM y', calendar: type });\n monthFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'y', calendar: type });\n }\n switch (view) {\n case 'days':\n this.headerTitleElement.textContent = this.toCapitalize(dayFormatOptions);\n break;\n case 'months':\n this.headerTitleElement.textContent = monthFormatOptions;\n }\n };\n CalendarBase.prototype.setActiveDescendant = function () {\n var id;\n var focusedEle = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedEle = this.tableBodyElement.querySelector('tr td.e-selected');\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var title;\n var view = this.currentView();\n if (view === 'Month') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'full', calendar: type });\n }\n else if (view === 'Year') {\n if (type !== 'islamic') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'yMMMM', calendar: type });\n }\n else {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'GyMMM', calendar: type });\n }\n }\n else {\n title = this.globalize.formatDate(this.currentDate, {\n format: null, type: 'date', skeleton: 'y', calendar: type\n });\n }\n if (selectedEle || focusedEle) {\n if (!isNullOrUndefined(selectedEle)) {\n selectedEle.setAttribute('aria-selected', 'true');\n }\n (focusedEle || selectedEle).setAttribute('aria-label', title);\n id = (focusedEle || selectedEle).getAttribute('id');\n }\n return id;\n };\n CalendarBase.prototype.iconHandler = function () {\n new Date(this.checkValue(this.currentDate)).setDate(1);\n switch (this.currentView()) {\n case 'Month':\n this.previousIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Year':\n this.previousIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Decade':\n this.previousIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CalendarBase.prototype.destroy = function () {\n if (this.getModuleName() === 'calendar' && this.element) {\n removeClass([this.element], [ROOT]);\n }\n else {\n if (this.calendarElement && this.element) {\n removeClass([this.element], [ROOT]);\n }\n }\n if (this.getModuleName() === 'calendar' && this.element) {\n if (!isNullOrUndefined(this.headerTitleElement)) {\n EventHandler.remove(this.headerTitleElement, 'click', this.navigateTitle);\n }\n if (this.todayElement) {\n EventHandler.remove(this.todayElement, 'click', this.todayButtonClick);\n }\n this.previousIconHandler(true);\n this.nextIconHandler(true);\n this.keyboardModule.destroy();\n this.element.removeAttribute('data-role');\n if (!isNullOrUndefined(this.calendarEleCopy.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.element.removeAttribute('tabindex');\n }\n }\n if (this.element) {\n this.element.innerHTML = '';\n }\n this.todayElement = null;\n this.tableBodyElement = null;\n this.renderDayCellArgs = null;\n this.headerElement = null;\n this.nextIcon = null;\n this.table = null;\n this.tableHeadElement = null;\n this.previousIcon = null;\n this.headerTitleElement = null;\n this.footer = null;\n this.contentElement = null;\n _super.prototype.destroy.call(this);\n };\n CalendarBase.prototype.title = function (e) {\n var currentView = this.getViewNumber(this.currentView());\n this.effect = ZOOMIN;\n this.switchView(++currentView, e);\n };\n CalendarBase.prototype.getViewNumber = function (stringVal) {\n if (stringVal === 'Month') {\n return 0;\n }\n else if (stringVal === 'Year') {\n return 1;\n }\n else {\n return 2;\n }\n };\n CalendarBase.prototype.navigateTitle = function (e) {\n e.preventDefault();\n this.title(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.previous = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, -10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigatePrevious = function (e) {\n !Browser.isDevice && e.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.previous();\n }\n else {\n this.islamicModule.islamicPrevious();\n }\n this.triggerNavigate(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.next = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, 10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigateNext = function (eve) {\n !Browser.isDevice && eve.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.next();\n }\n else {\n this.islamicModule.islamicNext();\n }\n this.triggerNavigate(eve);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n */\n CalendarBase.prototype.navigateTo = function (view, date, isCustomDate) {\n if (+date >= +this.min && +date <= +this.max) {\n this.currentDate = date;\n }\n if (+date <= +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n if (+date >= +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n if ((this.getViewNumber(this.depth) >= this.getViewNumber(view))) {\n if ((this.getViewNumber(this.depth) <= this.getViewNumber(this.start))\n || this.getViewNumber(this.depth) === this.getViewNumber(view)) {\n view = this.depth;\n }\n }\n this.switchView(this.getViewNumber(view), null, null, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n */\n CalendarBase.prototype.currentView = function () {\n if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(YEAR)) {\n return 'Year';\n }\n else if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(DECADE)) {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n CalendarBase.prototype.getDateVal = function (date, value) {\n return (!isNullOrUndefined(value) && date.getDate() === (value).getDate()\n && date.getMonth() === (value).getMonth() && date.getFullYear() === (value).getFullYear());\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.getCultureObjects = function (ld, c) {\n var gregorianFormat = '.dates.calendars.gregorian.days.format.' + this.dayHeaderFormat.toLowerCase();\n var islamicFormat = '.dates.calendars.islamic.days.format.' + this.dayHeaderFormat.toLowerCase();\n var mainVal = 'main.';\n if (this.calendarMode === 'Gregorian') {\n return getValue(mainVal + '' + this.locale + gregorianFormat, ld);\n }\n else {\n return getValue('main.' + '' + this.locale + islamicFormat, ld);\n }\n };\n CalendarBase.prototype.getWeek = function (d) {\n var currentDate = new Date(this.checkValue(d)).valueOf();\n var date = new Date(d.getFullYear(), 0, 1).valueOf();\n return Math.ceil((((currentDate - date) + dayMilliSeconds) / dayMilliSeconds) / 7);\n };\n CalendarBase.prototype.setStartDate = function (date, time) {\n var tzOffset = date.getTimezoneOffset();\n var d = new Date(date.getTime() + time);\n var tzOffsetDiff = d.getTimezoneOffset() - tzOffset;\n date.setTime(d.getTime() + tzOffsetDiff * minutesMilliSeconds);\n };\n CalendarBase.prototype.addMonths = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setMonth(date.getMonth() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, (islamicDate.month) + i, 1);\n }\n };\n CalendarBase.prototype.addYears = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setFullYear(date.getFullYear() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year + i, (islamicDate.month), 1);\n }\n };\n CalendarBase.prototype.getIdValue = function (e, element) {\n var eve;\n if (e) {\n eve = e.currentTarget;\n }\n else {\n eve = element;\n }\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full', calendar: type };\n // eslint-disable-next-line radix\n var dateString = this.globalize.formatDate(new Date(parseInt('' + eve.getAttribute('id'), 0)), dateFormatOptions);\n var date = this.globalize.parseDate(dateString, dateFormatOptions);\n var value = date.valueOf() - date.valueOf() % 1000;\n return new Date(value);\n //return this.globalize.parseDate(dateString, dateFormatOptions);\n };\n CalendarBase.prototype.adjustLongHeaderSize = function () {\n removeClass([this.element], DAYHEADERLONG);\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.getModuleName() === 'calendar' ? this.element : this.calendarElement], DAYHEADERLONG);\n }\n };\n CalendarBase.prototype.selectDate = function (e, date, node, multiSelection, values) {\n var element = node || e.currentTarget;\n this.isDateSelected = false;\n if (this.currentView() === 'Decade') {\n this.setDateDecade(this.currentDate, date.getFullYear());\n }\n else if (this.currentView() === 'Year') {\n this.setDateYear(this.currentDate, date);\n }\n else {\n if (multiSelection && !this.checkPresentDate(date, values)) {\n var copyValues = this.copyValues(values);\n if (!isNullOrUndefined(values) && copyValues.length > 0) {\n copyValues.push(new Date(this.checkValue(date)));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: values[values.length - 1] }, true);\n }\n else {\n this.setProperties({ values: [new Date(this.checkValue(date))] }, true);\n }\n }\n else {\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n }\n this.currentDate = new Date(this.checkValue(date));\n }\n var tableBodyElement = closest(element, '.' + ROOT);\n if (isNullOrUndefined(tableBodyElement)) {\n tableBodyElement = this.tableBodyElement;\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + SELECTED))) {\n removeClass([tableBodyElement.querySelector('.' + SELECTED)], SELECTED);\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + FOCUSEDDATE))) {\n removeClass([tableBodyElement.querySelector('.' + FOCUSEDDATE)], FOCUSEDDATE);\n }\n if (multiSelection) {\n var copyValues = this.copyValues(values);\n var collection = Array.prototype.slice.call(this.tableBodyElement.querySelectorAll('td'));\n for (var index = 0; index < collection.length; index++) {\n var tempElement = tableBodyElement.querySelectorAll('td' + '.' + FOCUSEDDATE)[0];\n var selectedElement = tableBodyElement.querySelectorAll('td' + '.' + SELECTED)[0];\n if (collection[index] === tempElement) {\n removeClass([collection[index]], FOCUSEDDATE);\n }\n if (collection[index] === selectedElement &&\n !this.checkPresentDate(new Date(parseInt(selectedElement.getAttribute('id').split('_')[0], 10)), values)) {\n removeClass([collection[index]], SELECTED);\n }\n }\n if (element.classList.contains(SELECTED)) {\n removeClass([element], SELECTED);\n for (var i = 0; i < copyValues.length; i++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(date, formatOptions);\n var tempDateString = this.globalize.formatDate(copyValues[i], formatOptions);\n if (localDateString === tempDateString) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n addClass([element], FOCUSEDDATE);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n addClass([element], SELECTED);\n }\n }\n else {\n addClass([element], SELECTED);\n }\n this.isDateSelected = true;\n };\n CalendarBase.prototype.checkPresentDate = function (dates, values) {\n var previousValue = false;\n if (!isNullOrUndefined(values)) {\n for (var checkPrevious = 0; checkPrevious < values.length; checkPrevious++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var localDateString = this.globalize.formatDate(dates, {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n var tempDateString = this.globalize.formatDate(values[checkPrevious], {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n if (localDateString === tempDateString) {\n previousValue = true;\n }\n }\n }\n return previousValue;\n };\n CalendarBase.prototype.setAriaActiveDescendant = function () {\n attributes(this.table, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n };\n CalendarBase.prototype.previousIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.previousIcon, 'click', this.navigatePreviousHandler);\n addClass([this.previousIcon], '' + DISABLED);\n addClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.previousIcon, 'click', this.navigatePreviousHandler);\n removeClass([this.previousIcon], '' + DISABLED);\n removeClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.renderDayCellEvent = function (args) {\n extend(this.renderDayCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n CalendarBase.prototype.navigatedEvent = function (eve) {\n extend(this.navigatedArgs, { name: 'navigated', event: eve });\n this.trigger('navigated', this.navigatedArgs);\n };\n CalendarBase.prototype.triggerNavigate = function (event) {\n this.navigatedArgs = { view: this.currentView(), date: this.currentDate };\n this.navigatedEvent(event);\n };\n CalendarBase.prototype.nextIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.nextIcon, 'click', this.navigateNextHandler);\n addClass([this.nextIcon], DISABLED);\n addClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.nextIcon, 'click', this.navigateNextHandler);\n removeClass([this.nextIcon], DISABLED);\n removeClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.compare = function (startDate, endDate, modifier) {\n var start = endDate.getFullYear();\n var end;\n var result;\n end = start;\n result = 0;\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n if (startDate.getFullYear() > end) {\n result = 1;\n }\n else if (startDate.getFullYear() < start) {\n result = -1;\n }\n return result;\n };\n CalendarBase.prototype.isMinMaxRange = function (date) {\n return +date >= +this.min && +date <= +this.max;\n };\n CalendarBase.prototype.isMonthYearRange = function (date) {\n if (this.calendarMode === 'Gregorian') {\n return date.getMonth() >= this.min.getMonth()\n && date.getFullYear() >= this.min.getFullYear()\n && date.getMonth() <= this.max.getMonth()\n && date.getFullYear() <= this.max.getFullYear();\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n return islamicDate.month >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).month\n && islamicDate.year >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).year\n && islamicDate.month <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).month\n && islamicDate.year <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).year;\n }\n };\n CalendarBase.prototype.compareYear = function (start, end) {\n return this.compare(start, end, 0);\n };\n CalendarBase.prototype.compareDecade = function (start, end) {\n return this.compare(start, end, 10);\n };\n CalendarBase.prototype.shiftArray = function (array, i) {\n return array.slice(i).concat(array.slice(0, i));\n };\n CalendarBase.prototype.addDay = function (date, i, e, max, min) {\n var column = i;\n var value = new Date(+date);\n if (!isNullOrUndefined(this.tableBodyElement) && !isNullOrUndefined(e)) {\n while (this.findNextTD(new Date(+date), column, max, min)) {\n column += i;\n }\n var rangeValue = new Date(value.setDate(value.getDate() + column));\n column = (+rangeValue > +max || +rangeValue < +min) ? column === i ? i - i : i : column;\n }\n date.setDate(date.getDate() + column);\n };\n CalendarBase.prototype.findNextTD = function (date, column, max, min) {\n var value = new Date(date.setDate(date.getDate() + column));\n var collection = [];\n var isDisabled = false;\n if ((!isNullOrUndefined(value) && value.getMonth()) === (!isNullOrUndefined(this.currentDate) && this.currentDate.getMonth())) {\n var tdEles = void 0;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(value);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n collection = tdEles.filter(function (element) {\n return element.classList.contains(DISABLED);\n });\n }\n else {\n collection = this.tableBodyElement.querySelectorAll('td.' + DISABLED);\n }\n if (+value <= (+(max)) && +value >= (+(min))) {\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line radix\n isDisabled = (+value === +new Date(parseInt(collection[i].id, 0))) ? true : false;\n if (isDisabled) {\n break;\n }\n }\n }\n }\n return isDisabled;\n };\n CalendarBase.prototype.getMaxDays = function (d) {\n var date;\n var tmpDate = new Date(this.checkValue(d));\n date = 28;\n var month = tmpDate.getMonth();\n while (tmpDate.getMonth() === month) {\n ++date;\n tmpDate.setDate(date);\n }\n return date - 1;\n };\n CalendarBase.prototype.setDateDecade = function (date, year) {\n date.setFullYear(year);\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.setDateYear = function (date, value) {\n date.setFullYear(value.getFullYear(), value.getMonth(), date.getDate());\n if (value.getMonth() !== date.getMonth()) {\n date.setDate(0);\n this.currentDate = new Date(this.checkValue(value));\n }\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.compareMonth = function (start, end) {\n var result;\n if (start.getFullYear() > end.getFullYear()) {\n result = 1;\n }\n else if (start.getFullYear() < end.getFullYear()) {\n result = -1;\n }\n else {\n result = start.getMonth() === end.getMonth() ? 0 : start.getMonth() > end.getMonth() ? 1 : -1;\n }\n return result;\n };\n CalendarBase.prototype.checkValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n CalendarBase.prototype.checkView = function () {\n if (this.start !== 'Decade' && this.start !== 'Year') {\n this.setProperties({ start: 'Month' }, true);\n }\n if (this.depth !== 'Decade' && this.depth !== 'Year') {\n this.setProperties({ depth: 'Month' }, true);\n }\n if (this.getViewNumber(this.depth) > this.getViewNumber(this.start)) {\n this.setProperties({ depth: 'Month' }, true);\n }\n };\n CalendarBase.prototype.getDate = function (date, timezone) {\n if (timezone) {\n date = new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n }\n return date;\n };\n __decorate([\n Property(new Date(1900, 0, 1))\n ], CalendarBase.prototype, \"min\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], CalendarBase.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], CalendarBase.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"weekNumber\", void 0);\n __decorate([\n Property('FirstDay')\n ], CalendarBase.prototype, \"weekRule\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], CalendarBase.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"navigated\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"renderDayCell\", void 0);\n CalendarBase = __decorate([\n NotifyPropertyChanges\n ], CalendarBase);\n return CalendarBase;\n}(Component));\nexport { CalendarBase };\n/**\n * Represents the Calendar component that allows the user to select a date.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Calendar = /** @class */ (function (_super) {\n __extends(Calendar, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarModel} options - Specifies the Calendar model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Calendar(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.render = function () {\n if (this.calendarMode === 'Islamic' && this.islamicModule === undefined) {\n throwError('Requires the injectable Islamic modules to render Calendar in Islamic mode');\n }\n if (this.isMultiSelection && typeof this.values === 'object' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var tempValues = [];\n var copyValues = [];\n for (var limit = 0; limit < this.values.length; limit++) {\n if (tempValues.indexOf(+this.values[limit]) === -1) {\n tempValues.push(+this.values[limit]);\n copyValues.push(this.values[limit]);\n }\n }\n this.setProperties({ values: copyValues }, true);\n for (var index = 0; index < this.values.length; index++) {\n if (!this.checkDateValue(this.values[index])) {\n if (typeof (this.values[index]) === 'string' && this.checkDateValue(new Date(this.checkValue(this.values[index])))) {\n var copyDate = new Date(this.checkValue(this.values[index]));\n this.values.splice(index, 1);\n this.values.splice(index, 0, copyDate);\n }\n else {\n this.values.splice(index, 1);\n }\n }\n }\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n this.previousValues = this.values.length;\n }\n this.validateDate();\n this.minMaxUpdate();\n if (this.getModuleName() === 'calendar') {\n this.setEnable(this.enabled);\n this.setClass(this.cssClass);\n }\n _super.prototype.render.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler.bind(this));\n }\n this.setTimeZone(this.serverTimezoneOffset);\n }\n this.renderComplete();\n };\n Calendar.prototype.setEnable = function (enable) {\n if (!enable) {\n addClass([this.element], DISABLED);\n }\n else {\n removeClass([this.element], DISABLED);\n }\n };\n Calendar.prototype.setClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCssClass) && oldCssClass !== '') {\n removeClass([this.element], oldCssClass.split(' '));\n }\n if (!isNullOrUndefined(newCssClass)) {\n addClass([this.element], newCssClass.split(' '));\n }\n };\n Calendar.prototype.isDayLightSaving = function () {\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n Calendar.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var serverTimezoneDiff = offsetValue;\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date(this.value.getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n Calendar.prototype.formResetHandler = function () {\n this.setProperties({ value: null }, true);\n };\n Calendar.prototype.validateDate = function () {\n if (typeof this.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(this.checkValue(this.value))) }, true); // persist the value property.\n }\n _super.prototype.validateDate.call(this, this.value);\n if (!isNullOrUndefined(this.value) && this.min <= this.max && this.value >= this.min && this.value <= this.max) {\n this.currentDate = new Date(this.checkValue(this.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n };\n Calendar.prototype.minMaxUpdate = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.value) && this.value <= this.min && this.min <= this.max) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value >= this.max && this.min <= this.max) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n }\n if (this.getModuleName() !== 'calendar' && !isNullOrUndefined(this.value)) {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.min);\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.max);\n }\n }\n }\n else {\n _super.prototype.minMaxUpdate.call(this, this.value);\n }\n };\n Calendar.prototype.generateTodayVal = function (value) {\n var tempValue = new Date();\n if (!isNullOrUndefined(this.timezone)) {\n tempValue = _super.prototype.getDate.call(this, tempValue, this.timezone);\n }\n if (value && isNullOrUndefined(this.timezone)) {\n tempValue.setHours(value.getHours());\n tempValue.setMinutes(value.getMinutes());\n tempValue.setSeconds(value.getSeconds());\n tempValue.setMilliseconds(value.getMilliseconds());\n }\n else {\n tempValue = new Date(tempValue.getFullYear(), tempValue.getMonth(), tempValue.getDate(), 0, 0, 0, 0);\n }\n return tempValue;\n };\n Calendar.prototype.todayButtonClick = function (e) {\n if (this.showTodayButton) {\n var tempValue = this.generateTodayVal(this.value);\n this.setProperties({ value: tempValue }, true);\n this.isTodayClicked = true;\n this.todayButtonEvent = e;\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (!_super.prototype.checkPresentDate.call(this, tempValue, this.values)) {\n copyValues.push(tempValue);\n this.setProperties({ values: copyValues });\n }\n }\n _super.prototype.todayButtonClick.call(this, e, new Date(+this.value));\n }\n };\n Calendar.prototype.keyActionHandle = function (e) {\n _super.prototype.keyActionHandle.call(this, e, this.value, this.isMultiSelection);\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.preRender = function () {\n var _this = this;\n this.changeHandler = function (e) {\n _this.triggerChange(e);\n };\n this.checkView();\n _super.prototype.preRender.call(this, this.value);\n };\n /**\n * @returns {void}\n\n */\n Calendar.prototype.createContent = function () {\n this.previousDate = this.value;\n this.previousDateTime = this.value;\n _super.prototype.createContent.call(this);\n };\n Calendar.prototype.minMaxDate = function (localDate) {\n return _super.prototype.minMaxDate.call(this, localDate);\n };\n Calendar.prototype.renderMonths = function (e, value, isCustomDate) {\n _super.prototype.renderMonths.call(this, e, this.value, isCustomDate);\n };\n Calendar.prototype.renderDays = function (currentDate, value, isMultiSelect, values, isCustomDate, e) {\n var tempDays = _super.prototype.renderDays.call(this, currentDate, this.value, this.isMultiSelection, this.values, isCustomDate, e);\n if (this.isMultiSelection) {\n _super.prototype.validateValues.call(this, this.isMultiSelection, this.values);\n }\n return tempDays;\n };\n Calendar.prototype.renderYears = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderYears.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderYears(e, this.value);\n }\n };\n Calendar.prototype.renderDecades = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderDecades.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderDecade(e, this.value);\n }\n };\n Calendar.prototype.renderTemplate = function (elements, count, classNm, e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderTemplate.call(this, elements, count, classNm, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(elements, count, classNm, e, this.value);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n };\n Calendar.prototype.clickHandler = function (e) {\n var eve = e.currentTarget;\n this.isPopupClicked = true;\n if (eve.classList.contains(OTHERMONTH)) {\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (copyValues.toString().indexOf(this.getIdValue(e, null).toString()) === -1) {\n copyValues.push(this.getIdValue(e, null));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n else {\n this.previousDates = true;\n }\n }\n else {\n this.setProperties({ value: this.getIdValue(e, null) }, true);\n }\n }\n var storeView = this.currentView();\n _super.prototype.clickHandler.call(this, e, this.value);\n if (this.isMultiSelection && this.currentDate !== this.value &&\n !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0]) && storeView === 'Year') {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\n };\n Calendar.prototype.switchView = function (view, e, isMultiSelection, isCustomDate) {\n _super.prototype.switchView.call(this, view, e, this.isMultiSelection, isCustomDate);\n };\n /**\n * To get component name\n *\n * @returns {string} Return the component name.\n * @private\n */\n Calendar.prototype.getModuleName = function () {\n _super.prototype.getModuleName.call(this);\n return 'calendar';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n Calendar.prototype.getPersistData = function () {\n _super.prototype.getPersistData.call(this);\n var keyEntity = ['value', 'values'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n Calendar.prototype.onPropertyChanged = function (newProp, oldProp) {\n this.effect = '';\n this.rangeValidation(this.min, this.max);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n if (this.isDateSelected) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: new Date(this.checkValue(newProp.value)) }, true);\n }\n else {\n newProp.value = new Date(this.checkValue(newProp.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: oldProp.value }, true);\n }\n this.update();\n }\n break;\n case 'values':\n if (this.isDateSelected) {\n if (typeof newProp.values === 'string' || typeof newProp.values === 'number') {\n this.setProperties({ values: null }, true);\n }\n else {\n var copyValues = this.copyValues(this.values);\n for (var index = 0; index < copyValues.length; index++) {\n var tempDate = copyValues[index];\n if (this.checkDateValue(tempDate) && !_super.prototype.checkPresentDate.call(this, tempDate, copyValues)) {\n copyValues.push(tempDate);\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.values.length > 0) {\n this.setProperties({ value: newProp.values[newProp.values.length - 1] }, true);\n }\n }\n this.validateValues(this.isMultiSelection, this.values);\n this.update();\n }\n break;\n case 'isMultiSelection':\n if (this.isDateSelected) {\n this.setProperties({ isMultiSelection: newProp.isMultiSelection }, true);\n this.update();\n }\n break;\n case 'enabled':\n this.setEnable(this.enabled);\n break;\n case 'cssClass':\n if (this.getModuleName() === 'calendar') {\n this.setClass(newProp.cssClass, oldProp.cssClass);\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp, this.isMultiSelection, this.values);\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Calendar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler.bind(this));\n }\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n\n */\n Calendar.prototype.navigateTo = function (view, date, isCustomDate) {\n this.minMaxUpdate();\n _super.prototype.navigateTo.call(this, view, date, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n\n */\n Calendar.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * This method is used to add the single or multiple dates to the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates to be added to the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.addDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number') {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && (dates).length > 0) {\n var tempDates = dates;\n for (var i = 0; i < tempDates.length; i++) {\n if (this.checkDateValue(tempDates[i]) && !_super.prototype.checkPresentDate.call(this, tempDates[i], copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push(tempDates[i]);\n }\n else {\n copyValues = [new Date(+tempDates[i])];\n }\n }\n }\n }\n else {\n if (this.checkDateValue(dates) && !_super.prototype.checkPresentDate.call(this, dates, copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push((dates));\n }\n else {\n copyValues = [new Date(+dates)];\n }\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.validateValues(this.isMultiSelection, copyValues);\n this.update();\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * This method is used to remove the single or multiple dates from the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates which need to be removed from the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.removeDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && ((dates).length > 0)) {\n var tempDates = dates;\n for (var index = 0; index < tempDates.length; index++) {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +tempDates[index]) {\n copyValues.splice(i, 1);\n }\n }\n }\n }\n else {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +dates) {\n copyValues.splice(i, 1);\n }\n }\n }\n this.setProperties({ values: copyValues }, false);\n this.update();\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * To set custom today date in calendar\n *\n * @param {Date} date - Specifies date value to be set.\n * @private\n * @returns {void}\n */\n Calendar.prototype.setTodayDate = function (date) {\n var todayDate = new Date(+date);\n this.setProperties({ value: todayDate }, true);\n _super.prototype.todayButtonClick.call(this, null, todayDate, true);\n };\n Calendar.prototype.update = function () {\n this.validateDate();\n this.minMaxUpdate();\n _super.prototype.setValueUpdate.call(this);\n };\n Calendar.prototype.selectDate = function (e, date, element) {\n _super.prototype.selectDate.call(this, e, date, element, this.isMultiSelection, this.values);\n if (this.isMultiSelection && !isNullOrUndefined(this.values) && this.values.length > 0) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Calendar.prototype.changeEvent = function (e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDate && +this.previousDate.valueOf())\n || this.isMultiSelection) {\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = new Date(+this.value);\n }\n };\n Calendar.prototype.triggerChange = function (e) {\n if (!isNullOrUndefined(this.todayButtonEvent) && this.isTodayClicked) {\n e = this.todayButtonEvent;\n this.isTodayClicked = false;\n }\n this.changedArgs.event = e || null;\n this.changedArgs.isInteracted = !isNullOrUndefined(e);\n if (!isNullOrUndefined(this.value)) {\n this.setProperties({ value: this.value }, true);\n }\n // eslint-disable-next-line use-isnan\n if (!this.isMultiSelection && +this.value !== Number.NaN && (!isNullOrUndefined(this.value) &&\n !isNullOrUndefined(this.previousDate) || this.previousDate === null\n && !isNaN(+this.value))) {\n this.changeEvent(e);\n }\n else if (!isNullOrUndefined(this.values) && this.previousValues !== this.values.length) {\n this.changeEvent(e);\n this.previousValues = this.values.length;\n }\n };\n __decorate([\n Property(null)\n ], Calendar.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Calendar.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], Calendar.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Event()\n ], Calendar.prototype, \"change\", void 0);\n Calendar = __decorate([\n NotifyPropertyChanges\n ], Calendar);\n return Calendar;\n}(CalendarBase));\nexport { Calendar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Event, extend, L10n, Browser, formatUnit } from '@syncfusion/ej2-base';\nimport { detach, addClass, removeClass, closest, attributes, Touch } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, setValue, getUniqueID } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { Calendar } from '../calendar/calendar';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar ROOT = 'e-datepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar POPUPWRAPPER = 'e-popup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar INPUTCONTAINER = 'e-input-group';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTROOT = 'e-input';\nvar ERROR = 'e-error';\nvar ACTIVE = 'e-active';\nvar OVERFLOW = 'e-date-overflow';\nvar DATEICON = 'e-date-icon';\nvar CLEARICON = 'e-clear-icon';\nvar ICONS = 'e-icons';\nvar OPENDURATION = 300;\nvar OFFSETVALUE = 4;\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar NONEDIT = 'e-non-edit';\nvar containerAttr = ['title', 'class', 'style'];\n/**\n * Represents the DatePicker component that allows user to select\n * or enter a date value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DatePicker = /** @class */ (function (_super) {\n __extends(DatePicker, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {DatePickerModel} options - Specifies the DatePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DatePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isDateIconClicked = false;\n _this.isAltKeyPressed = false;\n _this.isInteracted = true;\n _this.invalidValueString = null;\n _this.checkPreviousValue = null;\n _this.maskedDateValue = '';\n _this.isAngular = false;\n _this.preventChange = false;\n _this.isIconClicked = false;\n _this.isDynamicValueChanged = false;\n _this.moduleName = _this.getModuleName();\n _this.isFocused = false;\n _this.isBlur = false;\n _this.isKeyAction = false;\n _this.datepickerOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.render = function () {\n this.initialize();\n this.bindEvents();\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n this.setTimeZone(this.serverTimezoneOffset);\n };\n DatePicker.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = offsetValue;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n this.updateInput();\n }\n };\n DatePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n DatePicker.prototype.setAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateIconState();\n };\n DatePicker.prototype.updateIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDIT]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n };\n DatePicker.prototype.initialize = function () {\n this.checkInvalidValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setAllowEdit();\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInput(true);\n this.updateInputValue(this.maskedDateValue);\n }\n else if (!this.enableMask) {\n this.updateInput(true);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNullOrUndefined(this.value) ? new Date(+this.value) : null;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputValueCopy = this.value;\n };\n DatePicker.prototype.createInput = function () {\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-expanded': 'false',\n 'role': 'combobox', 'autocomplete': 'off', 'autocorrect': 'off',\n 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-invalid': 'false'\n };\n if (this.getModuleName() === 'datepicker') {\n var l10nLocale = { placeholder: this.placeholder };\n this.globalize = new Internationalization(this.locale);\n this.l10n = new L10n('datepicker', l10nLocale, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + \"e-popup-expand\";\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n var isBindClearAction = this.enableMask ? false : true;\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n bindClearAction: isBindClearAction,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [INPUTWRAPPER + ' ' + DATEICON + ' ' + ICONS]\n }, this.createElement);\n this.setWidth(this.width);\n if (this.inputElement.name !== '') {\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute('name'));\n }\n else {\n this.inputElement.setAttribute('name', '' + this.element.id);\n }\n attributes(this.inputElement, ariaAttrs);\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n Input.addAttributes({ 'aria-label': 'select' }, this.inputWrapper.buttons[0]);\n addClass([this.inputWrapper.container], DATEWRAPPER);\n };\n DatePicker.prototype.updateInput = function (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n if (this.value && !this.isCalendar()) {\n this.disabledDates(isDynamic, isBlur);\n }\n if (isNaN(+new Date(this.checkValue(this.value)))) {\n this.setProperties({ value: null }, true);\n }\n if (this.strictMode) {\n //calls the Calendar processDate protected method to update the date value according to the strictMode true behaviour.\n _super.prototype.validateDate.call(this);\n this.minMaxUpdates();\n _super.prototype.minMaxUpdate.call(this);\n }\n if (!isNullOrUndefined(this.value)) {\n var dateValue = this.value;\n var dateString = void 0;\n var tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateString = this.globalize.formatDate(this.value, formatOptions);\n }\n if ((+dateValue <= +this.max) && (+dateValue >= +this.min)) {\n this.updateInputValue(dateString);\n }\n else {\n var value = (+dateValue >= +this.max || !+this.value) || (!+this.value || +dateValue <= +this.min);\n if (!this.strictMode && value) {\n this.updateInputValue(dateString);\n }\n }\n }\n if (isNullOrUndefined(this.value) && this.strictMode) {\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n else {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.updateInputValue(this.invalidValueString);\n }\n this.changedArgs = { value: this.value };\n this.errorClass();\n this.updateIconState();\n };\n DatePicker.prototype.minMaxUpdates = function () {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n };\n DatePicker.prototype.checkStringValue = function (val) {\n var returnDate = null;\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatOptions));\n if (isNullOrUndefined(returnDate) && (this.getModuleName() === 'datetimepicker')) {\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatDateTime));\n }\n return returnDate;\n };\n DatePicker.prototype.checkInvalidValue = function (value) {\n if (!(value instanceof Date) && !isNullOrUndefined(value)) {\n var valueDate = null;\n var valueString = value;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n var invalid = false;\n if (typeof valueString !== 'string') {\n valueString = null;\n invalid = true;\n }\n else {\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n valueDate = this.checkStringValue(valueString);\n if (!valueDate) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n else {\n valueDate = new Date(valueString);\n }\n }\n }\n if (invalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n }\n else {\n this.setProperties({ value: valueDate }, true);\n }\n }\n };\n DatePicker.prototype.bindInputEvent = function () {\n if (!isNullOrUndefined(this.formatString) || this.enableMask) {\n if (this.enableMask || this.formatString.indexOf('y') === -1) {\n EventHandler.add(this.inputElement, 'input', this.inputHandler, this);\n }\n else {\n EventHandler.remove(this.inputElement, 'input', this.inputHandler);\n }\n }\n };\n DatePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateIconHandler, this);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyupHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n this.bindInputEvent();\n // To prevent the twice triggering.\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.resetFormHandler, this);\n }\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardModules = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DatePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp':\n case 'ArrowDown':\n case 'Home':\n case 'End':\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n if (e.code !== 'Delete') {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n DatePicker.prototype.unBindEvents = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateIconHandler);\n }\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'keyup', this.keyupHandler);\n if (this.enableMask) {\n EventHandler.remove(this.inputElement, 'keydown', this.keydownHandler);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n };\n DatePicker.prototype.resetFormHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var value = this.inputElement.getAttribute('value');\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n value = '';\n this.inputValueCopy = null;\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: this.inputValueCopy }, true);\n this.restoreValue();\n if (this.inputElement) {\n this.updateInputValue(value);\n this.errorClass();\n }\n }\n };\n DatePicker.prototype.restoreValue = function () {\n this.currentDate = this.value ? this.value : new Date();\n this.previousDate = this.value;\n this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.globalize.formatDate(this.inputValueCopy, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n });\n };\n DatePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n DatePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n DatePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n this.clear(e);\n };\n DatePicker.prototype.mouseUpHandler = function (e) {\n if (this.enableMask) {\n e.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n var clearedArgs = {\n event: event\n };\n this.trigger('cleared', clearedArgs);\n this.invalidValueString = '';\n this.updateInput();\n this.popupUpdate();\n this.changeEvent(event);\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n DatePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnDateIconClick');\n };\n DatePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DatePicker.prototype.dateIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n this.inputElement.blur();\n }\n e.preventDefault();\n if (!this.readonly) {\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.isDateIconClicked = true;\n this.show(null, e);\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n addClass(this.inputWrapper.buttons, ACTIVE);\n }\n }\n this.isIconClicked = false;\n };\n DatePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (!isNullOrUndefined(this.htmlAttributes[\"\" + key])) {\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.inputWrapper.container.getAttribute(key);\n if (!isNullOrUndefined(setStyle)) {\n if (setStyle.charAt(setStyle.length - 1) === ';') {\n setStyle = setStyle + this.htmlAttributes[\"\" + key];\n }\n else {\n setStyle = setStyle + ';' + this.htmlAttributes[\"\" + key];\n }\n }\n else {\n setStyle = this.htmlAttributes[\"\" + key];\n }\n this.inputWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n }\n };\n DatePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n DatePicker.prototype.updateCssClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newCssClass, [this.inputWrapper.container], oldCssClass);\n if (this.popupWrapper) {\n Input.setCssClass(newCssClass, [this.popupWrapper], oldCssClass);\n }\n };\n DatePicker.prototype.calendarKeyActionHandle = function (e) {\n switch (e.action) {\n case 'escape':\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[this.index].blur();\n }\n break;\n case 'enter':\n if (!this.isCalendar()) {\n this.show(null, e);\n }\n else {\n if (+this.value !== +this.currentDate && !this.isCalendar()) {\n this.inputWrapper.container.children[this.index].focus();\n }\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n break;\n case 'tab':\n this.hide(e);\n }\n };\n DatePicker.prototype.inputFocusHandler = function () {\n this.isFocused = true;\n if (!this.enabled) {\n return;\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n var focusArguments = {\n model: this\n };\n this.isDateIconClicked = false;\n this.trigger('focus', focusArguments);\n this.updateIconState();\n if (this.openOnFocus && !this.isIconClicked) {\n this.show();\n }\n };\n DatePicker.prototype.inputHandler = function () {\n this.isPopupClicked = false;\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.strictModeUpdate();\n if (this.inputElement.value === '' && isNullOrUndefined(this.value)) {\n this.invalidValueString = null;\n this.updateInputValue('');\n }\n this.isBlur = true;\n this.updateInput(false, true);\n this.isBlur = false;\n this.popupUpdate();\n this.changeTrigger(e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n this.errorClass();\n if (this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.getModuleName() === 'datepicker') {\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n if (this.isCalendar()) {\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.calendarKeyboardModules = new KeyboardEvents(this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: this.calendarKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n this.isPopupClicked = false;\n };\n DatePicker.prototype.documentHandler = function (e) {\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(e.target) && e.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(e.target)))) && e.type !== 'touchstart') {\n e.preventDefault();\n }\n var target = e.target;\n if (!(closest(target, '.e-datepicker.e-popup-wrapper')) && !isNullOrUndefined(this.inputWrapper)\n && !(closest(target, '.' + INPUTCONTAINER) === this.inputWrapper.container)\n && (!target.classList.contains('e-day'))) {\n this.hide(e);\n this.focusOut();\n }\n else if (closest(target, '.e-datepicker.e-popup-wrapper')) {\n // Fix for close the popup when select the previously selected value.\n if (target.classList.contains('e-day')\n && !isNullOrUndefined(e.target.parentElement)\n && e.target.parentElement.classList.contains('e-selected')\n && closest(target, '.e-content')\n && closest(target, '.e-content').classList.contains('e-' + this.depth.toLowerCase())) {\n this.hide(e);\n }\n else if (closest(target, '.e-footer-container')\n && target.classList.contains('e-today')\n && target.classList.contains('e-btn')\n && (+new Date(+this.value) === +_super.prototype.generateTodayVal.call(this, this.value))) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.inputKeyActionHandle = function (e) {\n var clickedView = this.currentView();\n switch (e.action) {\n case 'altUpArrow':\n this.isAltKeyPressed = false;\n this.hide(e);\n this.inputElement.focus();\n break;\n case 'altDownArrow':\n this.isAltKeyPressed = true;\n this.strictModeUpdate();\n this.updateInput();\n this.changeTrigger(e);\n if (this.getModuleName() === 'datepicker') {\n this.show(null, e);\n }\n break;\n case 'escape':\n this.hide(e);\n break;\n case 'enter':\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (!this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.isCalendar()) {\n e.preventDefault();\n e.stopPropagation();\n }\n break;\n case 'tab':\n case 'shiftTab':\n {\n var start = this.inputElement.selectionStart;\n var end = this.inputElement.selectionEnd;\n if (this.enableMask && !this.popupObj && !this.readonly) {\n var length_1 = this.inputElement.value.length;\n if ((start === 0 && end === length_1) || (end !== length_1 && e.action === 'tab') || (start !== 0 && e.action === 'shiftTab')) {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n start = this.inputElement.selectionStart;\n end = this.inputElement.selectionEnd;\n }\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (this.enableMask) {\n this.inputElement.selectionStart = start;\n this.inputElement.selectionEnd = end;\n }\n this.hide(e);\n break;\n }\n default:\n this.defaultAction(e);\n // Fix for close the popup when select the previously selected value.\n if (e.action === 'select' && clickedView === this.depth) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.defaultAction = function (e) {\n this.previousDate = ((!isNullOrUndefined(this.value) && new Date(+this.value)) || null);\n if (this.isCalendar()) {\n _super.prototype.keyActionHandle.call(this, e);\n if (this.isCalendar()) {\n attributes(this.inputElement, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n }\n }\n };\n DatePicker.prototype.popupUpdate = function () {\n if ((isNullOrUndefined(this.value)) && (!isNullOrUndefined(this.previousDate)) ||\n (+this.value !== +this.previousDate)) {\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED), [SELECTED]);\n }\n }\n if (!isNullOrUndefined(this.value)) {\n if ((+this.value >= +this.min) && (+this.value <= +this.max)) {\n var targetdate = new Date(this.checkValue(this.value));\n _super.prototype.navigateTo.call(this, 'Month', targetdate);\n }\n }\n }\n };\n DatePicker.prototype.strictModeUpdate = function () {\n var format;\n var pattern = /^y/;\n var charPattern = /[^a-zA-Z]/;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n format = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else if (!pattern.test(this.formatString) || charPattern.test(this.formatString)) {\n format = isNullOrUndefined(this.formatString) ? this.formatString : this.formatString.replace('dd', 'd');\n }\n if (!isNullOrUndefined(format)) {\n var len = format.split('M').length - 1;\n if (len < 3) {\n format = format.replace('MM', 'M');\n }\n }\n else {\n format = this.formatString;\n }\n var dateOptions;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateOptions = formatOptions;\n }\n var date;\n if (typeof this.inputElement.value === 'string') {\n this.inputElement.value = this.inputElement.value.trim();\n }\n if ((this.getModuleName() === 'datetimepicker')) {\n if (this.checkDateValue(this.globalize.parseDate(this.inputElement.value, dateOptions))) {\n date = this.globalize.parseDate(this.inputElement.value.toLocaleUpperCase(), dateOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.parseDate(this.inputElement.value, formatOptions);\n }\n }\n else {\n date = this.globalize.parseDate(this.inputElement.value, dateOptions);\n date = (!isNullOrUndefined(date) && isNaN(+date)) ? null : date;\n if (!isNullOrUndefined(this.formatString) && this.inputElement.value !== '' && this.strictMode) {\n if ((this.isPopupClicked || (!this.isPopupClicked && this.inputElement.value === this.previousElementValue))\n && this.formatString.indexOf('y') === -1) {\n date.setFullYear(this.value.getFullYear());\n }\n }\n }\n // EJ2-35061 - To prevent change event from triggering twice when using strictmode and format property\n if ((this.getModuleName() === 'datepicker') && (this.value && !isNaN(+this.value)) && date) {\n date.setHours(this.value.getHours(), this.value.getMinutes(), this.value.getSeconds(), this.value.getMilliseconds());\n }\n if (this.strictMode && date) {\n this.updateInputValue(this.globalize.formatDate(date, dateOptions));\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n else if (!this.strictMode) {\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n if (this.strictMode && !date && this.inputElement.value === (this.enableMask ? this.maskedDateValue : '')) {\n this.setProperties({ value: null }, true);\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n if (isNullOrUndefined(this.value)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n };\n DatePicker.prototype.createCalendar = function () {\n var _this = this;\n this.popupWrapper = this.createElement('div', { className: '' + ROOT + ' ' + POPUPWRAPPER });\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (Browser.isDevice) {\n this.modelHeader();\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-date-modal';\n document.body.className += ' ' + OVERFLOW;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n //this.calendarElement represent the Calendar object from the Calendar class.\n this.calendarElement.querySelector('table tbody').className = '';\n this.popupObj = new Popup(this.popupWrapper, {\n content: this.calendarElement,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : (this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' }),\n offsetY: OFFSETVALUE,\n targetType: 'container',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n open: function () {\n if (Browser.isDevice && _this.fullScreenMode) {\n _this.iconRight = parseInt(window.getComputedStyle(_this.calendarElement.querySelector('.e-header.e-month .e-prev')).marginRight, 10) > 16 ? true : false;\n _this.touchModule = new Touch(_this.calendarElement.querySelector(\".e-content.e-month\"), {\n swipe: _this.CalendarSwipeHandler.bind(_this)\n });\n EventHandler.add(_this.calendarElement.querySelector(\".e-content.e-month\"), \"touchstart\", _this.TouchStartHandler, _this);\n }\n if (_this.getModuleName() !== 'datetimepicker') {\n if (document.activeElement !== _this.inputElement) {\n _this.defaultKeyConfigs = extend(_this.defaultKeyConfigs, _this.keyConfigs);\n _this.calendarElement.children[1].firstElementChild.focus();\n _this.calendarKeyboardModules = new KeyboardEvents(_this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n _this.calendarKeyboardModules = new KeyboardEvents(_this.inputWrapper.container.children[_this.index], {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n }\n }\n }, close: function () {\n if (_this.isDateIconClicked) {\n _this.inputWrapper.container.children[_this.index].focus();\n }\n if (_this.value) {\n _this.disabledDates();\n }\n if (_this.popupObj) {\n _this.popupObj.destroy();\n }\n _this.resetCalendar();\n detach(_this.popupWrapper);\n _this.popupObj = _this.popupWrapper = null;\n _this.preventArgs = null;\n _this.calendarKeyboardModules = null;\n _this.setAriaAttributes();\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n this.popupObj.element.className += ' ' + this.cssClass;\n this.setAriaAttributes();\n };\n DatePicker.prototype.CalendarSwipeHandler = function (e) {\n var direction = 0;\n if (this.iconRight) {\n switch (e.swipeDirection) {\n case \"Left\":\n direction = 1;\n break;\n case \"Right\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n else {\n switch (e.swipeDirection) {\n case \"Up\":\n direction = 1;\n break;\n case \"Down\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n if (this.touchStart) {\n if (direction === 1) {\n this.navigateNext(e);\n }\n else if (direction === -1) {\n this.navigatePrevious(e);\n }\n this.touchStart = false;\n }\n };\n DatePicker.prototype.TouchStartHandler = function (e) {\n this.touchStart = true;\n };\n DatePicker.prototype.setAriaDisabled = function () {\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n };\n DatePicker.prototype.modelHeader = function () {\n var dateOptions;\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var yearHeading = this.createElement('h1', { className: 'e-model-year' });\n var h2 = this.createElement('div');\n var daySpan = this.createElement('span', { className: 'e-model-day' });\n var monthSpan = this.createElement('span', { className: 'e-model-month' });\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'y', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'y', skeleton: 'dateTime', calendar: 'islamic' };\n }\n yearHeading.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'E', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'E', skeleton: 'dateTime', calendar: 'islamic' };\n }\n daySpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions) + ', ';\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime', calendar: 'islamic' };\n }\n monthSpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.fullScreenMode) {\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.modelCloseHandler, this);\n var modelTodayButton = this.calendarElement.querySelector(\"button.e-today\");\n h2.classList.add(\"e-day-wrapper\");\n modelTodayButton.classList.add(\"e-outline\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTodayButton);\n }\n if (!this.fullScreenMode)\n modelHeader.appendChild(yearHeading);\n h2.appendChild(daySpan);\n h2.appendChild(monthSpan);\n modelHeader.appendChild(h2);\n this.calendarElement.insertBefore(modelHeader, this.calendarElement.firstElementChild);\n };\n DatePicker.prototype.modelCloseHandler = function (e) {\n this.hide();\n };\n DatePicker.prototype.changeTrigger = function (event) {\n if (this.inputElement.value !== this.previousElementValue) {\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n if (this.isDynamicValueChanged && this.isCalendar()) {\n this.popupUpdate();\n }\n this.changedArgs.value = this.value;\n this.changedArgs.event = event || null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = !isNullOrUndefined(event);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNaN(+new Date(this.checkValue(this.value))) ? new Date(this.checkValue(this.value)) : null;\n this.isInteracted = true;\n }\n }\n this.isKeyAction = false;\n };\n DatePicker.prototype.navigatedEvent = function () {\n this.trigger('navigated', this.navigatedArgs);\n };\n DatePicker.prototype.keyupHandler = function (e) {\n this.isKeyAction = (this.inputElement.value !== this.previousElementValue) ? true : false;\n };\n DatePicker.prototype.changeEvent = function (event) {\n if (!this.isIconClicked && !(this.isBlur || this.isKeyAction)) {\n this.selectCalendar(event);\n }\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n this.changedArgs.event = event ? event : null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = this.isInteracted;\n if (!this.isDynamicValueChanged) {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = this.value && new Date(+this.value);\n if (!this.isDynamicValueChanged) {\n this.hide(event);\n }\n this.previousElementValue = this.inputElement.value;\n this.errorClass();\n }\n else if (event) {\n this.hide(event);\n }\n this.isKeyAction = false;\n };\n DatePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n DatePicker.prototype.selectCalendar = function (e) {\n var date;\n var tempFormat;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n tempFormat = this.formatString;\n }\n if (this.value) {\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!isNullOrUndefined(date)) {\n this.updateInputValue(date);\n if (this.enableMask) {\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n }\n };\n DatePicker.prototype.isCalendar = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + POPUPWRAPPER)) {\n return true;\n }\n return false;\n };\n DatePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (this.width) : (formatUnit(this.width));\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Shows the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.show = function (type, e) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n var prevent_1 = true;\n var outOfRange = void 0;\n if (!isNullOrUndefined(this.value) && !(+this.value >= +new Date(this.checkValue(this.min))\n && +this.value <= +new Date(this.checkValue(this.max)))) {\n outOfRange = new Date(this.checkValue(this.value));\n this.setProperties({ 'value': null }, true);\n }\n else {\n outOfRange = this.value || null;\n }\n if (!this.isCalendar()) {\n _super.prototype.render.call(this);\n this.setProperties({ 'value': outOfRange || null }, true);\n this.previousDate = outOfRange;\n this.createCalendar();\n }\n if (Browser.isDevice) {\n this.mobilePopupWrapper = this.createElement('div', { className: 'e-datepick-mob-popup-wrap' });\n document.body.appendChild(this.mobilePopupWrapper);\n }\n this.preventArgs = {\n preventDefault: function () {\n prevent_1 = false;\n },\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n appendTo: Browser.isDevice ? this.mobilePopupWrapper : document.body\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (prevent_1 && !_this.preventArgs.cancel) {\n addClass(_this.inputWrapper.buttons, ACTIVE);\n _this.preventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupObj.refreshPosition(_this.inputElement);\n var openAnimation = {\n name: 'FadeIn',\n duration: Browser.isDevice ? 0 : OPENDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _super.prototype.setOverlayIndex.call(_this, _this.mobilePopupWrapper, _this.popupObj.element, _this.modal, Browser.isDevice);\n _this.setAriaAttributes();\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.popupObj = null;\n }\n if (!isNullOrUndefined(_this.inputElement) && _this.inputElement.value === '') {\n if (!isNullOrUndefined(_this.tableBodyElement) && _this.tableBodyElement.querySelectorAll('td.e-selected').length > 0) {\n addClass([_this.tableBodyElement.querySelector('td.e-selected')], FOCUSEDDATE);\n removeClass(_this.tableBodyElement.querySelectorAll('td.e-selected'), SELECTED);\n }\n }\n EventHandler.add(document, 'mousedown touchstart', _this.documentHandler, _this);\n });\n }\n };\n /**\n * Hide the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.hide = function (event) {\n var _this = this;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var prevent_2 = true;\n this.preventArgs = {\n preventDefault: function () {\n prevent_2 = false;\n },\n popup: this.popupObj,\n event: event || null,\n cancel: false\n };\n removeClass(this.inputWrapper.buttons, ACTIVE);\n removeClass([document.body], OVERFLOW);\n var eventArgs = this.preventArgs;\n if (this.isCalendar()) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventCallback(prevent_2, eventArgs);\n });\n }\n else {\n this.closeEventCallback(prevent_2, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n DatePicker.prototype.closeEventCallback = function (prevent, eventArgs) {\n this.preventArgs = eventArgs;\n if (this.isCalendar() && (prevent && !this.preventArgs.cancel)) {\n this.popupObj.hide();\n this.isAltKeyPressed = false;\n this.keyboardModule.destroy();\n removeClass(this.inputWrapper.buttons, ACTIVE);\n }\n this.setAriaAttributes();\n if (Browser.isDevice && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(this.mobilePopupWrapper) && (prevent && (isNullOrUndefined(this.preventArgs) || !this.preventArgs.cancel))) {\n this.mobilePopupWrapper.remove();\n this.mobilePopupWrapper = null;\n }\n }\n EventHandler.remove(document, 'mousedown touchstart', this.documentHandler);\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n /* eslint-disable jsdoc/require-param */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DatePicker.prototype.focusIn = function (triggerEvent) {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n /* eslint-enable jsdoc/require-param */\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DatePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.inputElement.blur();\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the DatePicker.\n *\n * @returns {string}\n\n */\n DatePicker.prototype.currentView = function () {\n var currentView;\n if (this.calendarElement) {\n // calls the Calendar currentView public method\n currentView = _super.prototype.currentView.call(this);\n }\n return currentView;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Navigates to specified month or year or decade view of the DatePicker.\n *\n * @param {string} view - Specifies the view of the calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns {void}\n\n */\n DatePicker.prototype.navigateTo = function (view, date) {\n if (this.calendarElement) {\n // calls the Calendar navigateTo public method\n _super.prototype.navigateTo.call(this, view, date);\n }\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DatePicker.prototype.destroy = function () {\n this.unBindEvents();\n _super.prototype.destroy.call(this);\n if (!isNullOrUndefined(this.keyboardModules)) {\n this.keyboardModules.destroy();\n }\n if (this.popupObj && this.popupObj.element.classList.contains(POPUP)) {\n _super.prototype.destroy.call(this);\n }\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-disabled': 'true',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttrs, this.inputElement);\n if (!isNullOrUndefined(this.inputElementCopy.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n this.ensureInputAttribute();\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObj = this.popupWrapper = null;\n this.keyboardModule.destroy();\n }\n if (this.ngTag === null) {\n if (this.inputElement) {\n if (!isNullOrUndefined(this.inputWrapper)) {\n this.inputWrapper.container.insertAdjacentElement('afterend', this.inputElement);\n }\n removeClass([this.inputElement], [INPUTROOT]);\n }\n removeClass([this.element], [ROOT]);\n if (!isNullOrUndefined(this.inputWrapper)) {\n detach(this.inputWrapper.container);\n }\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n this.inputWrapper = null;\n this.keyboardModules = null;\n };\n DatePicker.prototype.ensureInputAttribute = function () {\n var prop = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n prop[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < prop.length; i++) {\n if (isNullOrUndefined(this.inputElementCopy.getAttribute(prop[i]))) {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(prop[i]);\n }\n else {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = this.inputElementCopy.getAttribute(prop[i]);\n }\n this.inputElement.setAttribute(prop[i], this.inputElementCopy.getAttribute(prop[i]));\n }\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.preRender = function () {\n this.inputElementCopy = this.element.cloneNode(true);\n removeClass([this.inputElementCopy], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.formElement = closest(this.inputElement, 'form');\n this.index = this.showClearButton ? 2 : 1;\n this.ngTag = null;\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.ngTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n if (this.element.getAttribute('id')) {\n if (this.ngTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n }\n if (this.ngTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.checkHtmlAttributes(false);\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n };\n DatePicker.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n altUpArrow: 'alt+uparrow',\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n shiftTab: 'shift+tab',\n tab: 'tab'\n };\n return this.defaultKeyConfigs;\n };\n DatePicker.prototype.validationAttribute = function (target, inputElement) {\n var nameAttribute = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n inputElement.setAttribute('name', nameAttribute);\n target.removeAttribute('name');\n var attribute = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attribute.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attribute[i]))) {\n continue;\n }\n var attr = target.getAttribute(attribute[i]);\n inputElement.setAttribute(attribute[i], attr);\n target.removeAttribute(attribute[i]);\n }\n };\n DatePicker.prototype.checkFormat = function () {\n var culture = new Internationalization(this.locale);\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n var skeletonString = this.format.skeleton;\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'dateTime' });\n }\n else {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = this.dateTimeFormat;\n }\n else {\n this.formatString = null;\n }\n }\n }\n else {\n this.formatString = null;\n }\n };\n DatePicker.prototype.checkHtmlAttributes = function (dynamic) {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n var attributes = dynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder', 'type'];\n var options;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['enabled'] === undefined)) || dynamic)) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !dynamic);\n }\n break;\n case 'readonly':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['readonly'] === undefined)) || dynamic)) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !dynamic);\n }\n break;\n case 'placeholder':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['placeholder'] === undefined)) || dynamic)) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !dynamic);\n }\n break;\n case 'style':\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n break;\n case 'name':\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n break;\n case 'value':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['value'] === undefined)) || dynamic)) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(value, options), {}), !dynamic);\n }\n break;\n case 'min':\n if ((+this.min === +new Date(1900, 0, 1)) || dynamic) {\n var min = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(min), {}), !dynamic);\n }\n break;\n case 'max':\n if ((+this.max === +new Date(2099, 11, 31)) || dynamic) {\n var max = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(max), {}), !dynamic);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text') {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DatePicker.prototype.getModuleName = function () {\n return 'datepicker';\n };\n DatePicker.prototype.disabledDates = function (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n var globalize;\n var valueCopy = this.checkDateValue(this.value) ? new Date(+this.value) : new Date(this.checkValue(this.value));\n var previousValCopy = this.previousDate;\n //calls the Calendar render method to check the disabled dates through renderDayCell event and update the input value accordingly.\n this.minMaxUpdates();\n if (!isDynamic || (isDynamic && !isNullOrUndefined(this.renderDayCell))) {\n _super.prototype.render.call(this);\n }\n this.previousDate = previousValCopy;\n var date = valueCopy && +(valueCopy);\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + date);\n if (!this.strictMode) {\n if (typeof this.value === 'string' || ((typeof this.value === 'object') && (+this.value) !== (+valueCopy))) {\n this.setProperties({ value: valueCopy }, true);\n }\n }\n if (!isNullOrUndefined(this.calendarElement) && !isNullOrUndefined(this.calendarElement.querySelectorAll(dateIdString)[0])) {\n if (this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled')) {\n if (!this.strictMode) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n }\n }\n var inputVal;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n inputVal = globalize;\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n inputVal = this.globalize.formatDate(valueCopy, formatOptions);\n }\n if (!this.popupObj) {\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime', isBlur: isBlur\n });\n }\n }\n };\n DatePicker.prototype.setAriaAttributes = function () {\n if (this.isCalendar()) {\n Input.addAttributes({ 'aria-expanded': 'true' }, this.inputElement);\n attributes(this.inputElement, { 'aria-owns': this.inputElement.id + '_options' });\n if (this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': '' + this.setActiveDescendant() });\n }\n }\n else {\n Input.addAttributes({ 'aria-expanded': 'false' }, this.inputElement);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DatePicker.prototype.errorClass = function () {\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + (+this.value));\n var isDisabledDate = this.calendarElement &&\n this.calendarElement.querySelectorAll(dateIdString)[0] &&\n this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled');\n if ((!isNullOrUndefined(this.value) && !isNullOrUndefined(this.min) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !isNullOrUndefined(this.max) && !(new Date(this.value).setMilliseconds(0) >= new Date(this.min).setMilliseconds(0)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n && new Date(this.value).setMilliseconds(0) <= new Date(this.max).setMilliseconds(0)))\n || (!this.strictMode && this.inputElement.value !== '' && this.inputElement.value !== this.maskedDateValue && isNullOrUndefined(this.value) || isDisabledDate)) {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else if (!isNullOrUndefined(this.inputWrapper)) {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DatePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DatePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n DatePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.isInteracted = false;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n this.previousElementValue = this.inputElement.value;\n if (isNullOrUndefined(this.value)) {\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n this.updateInputValue('');\n }\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.updateInput(true);\n if (+this.previousDate !== +this.value) {\n this.changeTrigger(null);\n }\n this.isInteracted = true;\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'format':\n this.checkFormat();\n this.bindInputEvent();\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'allowEdit':\n this.setAllowEdit();\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n this.setAriaDisabled();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'start':\n case 'depth':\n this.checkView();\n if (this.calendarElement) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n this.index = this.showClearButton ? 2 : 1;\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n this.bindInputEvent();\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n default:\n if (this.calendarElement && this.isCalendar()) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property({})\n ], DatePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(1000)\n ], DatePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property('Never')\n ], DatePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DatePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"destroyed\", void 0);\n DatePicker = __decorate([\n NotifyPropertyChanges\n ], DatePicker);\n return DatePicker;\n}(Calendar));\nexport { DatePicker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Browser } from '@syncfusion/ej2-base';\nimport { cldrData, L10n, Component, getDefaultDateObject, rippleEffect, Event } from '@syncfusion/ej2-base';\nimport { remove, addClass, detach, removeClass, closest, append, attributes, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, getValue, extend, getUniqueID, ChildProperty } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { ListBase } from '@syncfusion/ej2-lists';\nvar WRAPPERCLASS = 'e-time-wrapper';\nvar POPUP = 'e-popup';\nvar ERROR = 'e-error';\nvar POPUPDIMENSION = '240px';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar ROOT = 'e-timepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar CONTENT = 'e-content';\nvar SELECTED = 'e-active';\nvar HOVER = 'e-hover';\nvar NAVIGATION = 'e-navigation';\nvar DISABLED = 'e-disabled';\nvar ICONANIMATION = 'e-icon-anim';\nvar TIMEICON = 'e-time-icon';\nvar CLEARICON = 'e-clear-icon';\nvar FOCUS = 'e-input-focus';\nvar LISTCLASS = 'e-list-item';\nvar HALFPOSITION = 2;\nvar ANIMATIONDURATION = 50;\nvar OVERFLOW = 'e-time-overflow';\nvar OFFSETVAL = 4;\nvar EDITABLE = 'e-non-edit';\nvar wrapperAttributes = ['title', 'class', 'style'];\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var TimePickerBase;\n(function (TimePickerBase) {\n // eslint-disable-next-line max-len, jsdoc/require-jsdoc\n function createListItems(createdEl, min, max, globalize, timeFormat, step) {\n var formatOptions;\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: timeFormat, type: 'time' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: timeFormat, type: 'time', calendar: 'islamic' };\n }\n var start;\n var interval = step * 60000;\n var listItems = [];\n var timeCollections = [];\n start = +(min.setMilliseconds(0));\n var end = +(max.setMilliseconds(0));\n while (end >= start) {\n timeCollections.push(start);\n listItems.push(globalize.formatDate(new Date(start), { format: timeFormat, type: 'time' }));\n start += interval;\n }\n var listTag = ListBase.createList(createdEl, listItems, null, true);\n return { collection: timeCollections, list: listTag };\n }\n TimePickerBase.createListItems = createListItems;\n})(TimePickerBase || (TimePickerBase = {}));\nvar TimeMaskPlaceholder = /** @class */ (function (_super) {\n __extends(TimeMaskPlaceholder, _super);\n function TimeMaskPlaceholder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('day')\n ], TimeMaskPlaceholder.prototype, \"day\", void 0);\n __decorate([\n Property('month')\n ], TimeMaskPlaceholder.prototype, \"month\", void 0);\n __decorate([\n Property('year')\n ], TimeMaskPlaceholder.prototype, \"year\", void 0);\n __decorate([\n Property('day of the week')\n ], TimeMaskPlaceholder.prototype, \"dayOfTheWeek\", void 0);\n __decorate([\n Property('hour')\n ], TimeMaskPlaceholder.prototype, \"hour\", void 0);\n __decorate([\n Property('minute')\n ], TimeMaskPlaceholder.prototype, \"minute\", void 0);\n __decorate([\n Property('second')\n ], TimeMaskPlaceholder.prototype, \"second\", void 0);\n return TimeMaskPlaceholder;\n}(ChildProperty));\nexport { TimeMaskPlaceholder };\n/**\n * TimePicker is an intuitive interface component which provides an options to select a time value\n * from popup list or to set a desired time value.\n * ```\n * \n * \n * ```\n */\nvar TimePicker = /** @class */ (function (_super) {\n __extends(TimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {TimePickerModel} options - Specifies the TimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function TimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.liCollections = [];\n _this.timeCollections = [];\n _this.disableItemCollection = [];\n _this.invalidValueString = null;\n _this.isAngular = false;\n _this.preventChange = false;\n _this.maskedDateValue = '';\n _this.moduleName = _this.getModuleName();\n _this.timeOptions = options;\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n TimePicker.prototype.preRender = function () {\n this.keyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.angularTag = null;\n this.formElement = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n this.openPopupEventArgs = {\n appendTo: document.body\n };\n };\n // element creation\n TimePicker.prototype.render = function () {\n this.initialize();\n this.createInputElement();\n this.updateHtmlAttributeToWrapper();\n this.setTimeAllowEdit();\n this.setEnable();\n this.validateInterval();\n this.bindEvents();\n this.validateDisable();\n this.setTimeZone();\n this.setValue(this.getFormattedValue(this.value));\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n this.anchor = this.inputElement;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputEleValue = this.getDateObject(this.inputElement.value);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n TimePicker.prototype.setTimeZone = function () {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = this.serverTimezoneOffset;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n TimePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n TimePicker.prototype.setTimeAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.clearIconState();\n };\n TimePicker.prototype.clearIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [EDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n };\n TimePicker.prototype.validateDisable = function () {\n this.setMinMax(this.initMin, this.initMax);\n if (!isNullOrUndefined(this.value)) {\n this.popupCreation();\n this.popupObj.destroy();\n this.popupWrapper = this.popupObj = null;\n }\n if ((!isNaN(+this.value) && this.value !== null)) {\n if (!this.valueIsDisable(this.value)) {\n //disable value given in value property so reset the date based on current date\n if (this.strictMode) {\n this.resetState();\n }\n this.initValue = null;\n this.initMax = this.getDateObject(this.initMax);\n this.initMin = this.getDateObject(this.initMin);\n this.timeCollections = this.liCollections = [];\n this.setMinMax(this.initMin, this.initMax);\n }\n }\n };\n TimePicker.prototype.validationAttribute = function (target, input) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n input.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attributes[i]))) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n input.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n TimePicker.prototype.initialize = function () {\n this.globalize = new Internationalization(this.locale);\n this.defaultCulture = new Internationalization('en');\n this.checkTimeFormat();\n this.checkInvalidValue(this.value);\n // persist the value property.\n this.setProperties({ value: this.checkDateValue(new Date(this.checkInValue(this.value))) }, true);\n this.setProperties({ min: this.checkDateValue(new Date(this.checkInValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkInValue(this.max))) }, true);\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(this.scrollTo))) }, true);\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.checkAttributes(false); //check the input element attributes\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('timepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.initValue = this.checkDateValue(this.value);\n this.initMin = this.checkDateValue(this.min);\n this.initMax = this.checkDateValue(this.max);\n this.isNavigate = this.isPreventBlur = this.isTextSelected = false;\n this.activeIndex = this.valueWithMinutes = this.prevDate = null;\n if (!isNullOrUndefined(this.element.getAttribute('id'))) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n //for angular case\n this.element.id = getUniqueID('ej2_timepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n };\n TimePicker.prototype.checkTimeFormat = function () {\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (!isNullOrUndefined(this.format.skeleton) && this.format.skeleton !== '') {\n var skeletonString = this.format.skeleton;\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: skeletonString });\n }\n else {\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: 'short' });\n }\n }\n else {\n this.formatString = null;\n }\n };\n TimePicker.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n TimePicker.prototype.createInputElement = function () {\n if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + \"e-popup-expand\";\n }\n var updatedCssClassesValue = this.cssClass;\n var isBindClearAction = this.enableMask ? false : true;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassesValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n bindClearAction: isBindClearAction,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassesValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [' e-input-group-icon e-time-icon e-icons']\n }, this.createElement);\n this.inputWrapper.container.style.width = this.setWidth(this.width);\n attributes(this.inputElement, {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'false', 'aria-invalid': 'false'\n });\n if (!this.isNullOrEmpty(this.inputStyle)) {\n Input.addAttributes({ 'style': this.inputStyle }, this.inputElement);\n }\n addClass([this.inputWrapper.container], WRAPPERCLASS);\n };\n TimePicker.prototype.getCldrDateTimeFormat = function () {\n var culture = new Internationalization(this.locale);\n var cldrTime;\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.cldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.checkInvalidValue = function (value) {\n var isInvalid = false;\n if (typeof value !== 'object' && !isNullOrUndefined(value)) {\n var valueString = value;\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n var valueExpression = null;\n var valueExp = null;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n else if (typeof value === 'string') {\n if (!(/^[a-zA-Z0-9- ]*$/).test(value)) {\n valueExpression = this.setCurrentDate(this.getDateObject(value));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n }));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n }));\n }\n }\n }\n }\n valueExp = this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n });\n valueExpression = (!isNullOrUndefined(valueExp) && valueExp instanceof Date && !isNaN(+valueExp)) ? valueExp : null;\n if (isNullOrUndefined(valueExpression) && valueString.replace(/\\s/g, '').length) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || ((/^[a-zA-Z0-9- ]*$/).test(value)) || isNaN(+new Date('' + valueString))) {\n isInvalid = true;\n }\n else {\n valueExpression = new Date('' + valueString);\n }\n }\n if (isInvalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n this.initValue = null;\n }\n else {\n this.setProperties({ value: valueExpression }, true);\n this.initValue = this.value;\n }\n }\n };\n TimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.cldrFormat = function (type) {\n var cldrDateTimeString;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTimeString = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTimeString = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTimeString;\n };\n // destroy function\n TimePicker.prototype.destroy = function () {\n this.hide();\n this.unBindEvents();\n var ariaAttribute = {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'true', 'aria-invalid': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n if (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n this.ensureInputAttribute();\n this.enableElement([this.inputElement]);\n this.inputElement.classList.remove('e-input');\n if (isNullOrUndefined(this.cloneElement.getAttribute('disabled'))) {\n Input.setEnabled(true, this.inputElement, this.floatLabelType);\n }\n }\n if (this.inputWrapper.container) {\n detach(this.inputWrapper.container);\n }\n this.inputWrapper = this.popupWrapper = this.cloneElement = undefined;\n this.liCollections = this.timeCollections = this.disableItemCollection = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n _super.prototype.destroy.call(this);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n this.rippleFn = null;\n this.openPopupEventArgs = null;\n this.selectedElement = null;\n this.listTag = null;\n this.liCollections = null;\n };\n TimePicker.prototype.ensureInputAttribute = function () {\n var propertyList = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n propertyList[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < propertyList.length; i++) {\n if (!isNullOrUndefined(this.cloneElement.getAttribute(propertyList[i]))) {\n this.inputElement.setAttribute(propertyList[i], this.cloneElement.getAttribute(propertyList[i]));\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(propertyList[i]);\n }\n }\n else {\n this.inputElement.removeAttribute(propertyList[i]);\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n }\n }\n };\n //popup creation\n TimePicker.prototype.popupCreation = function () {\n this.popupWrapper = this.createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_popup', 'style': 'visibility:hidden' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.generateList();\n append([this.listWrapper], this.popupWrapper);\n }\n this.addSelection();\n this.renderPopup();\n detach(this.popupWrapper);\n };\n TimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.popupWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n };\n TimePicker.prototype.generateList = function () {\n this.createListItems();\n this.wireListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n TimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.setPopupWidth(this.width),\n zIndex: this.zIndex,\n targetType: 'relative',\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n enableRtl: this.enableRtl,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n offsetY: OFFSETVAL,\n open: function () {\n _this.popupWrapper.style.visibility = 'visible';\n addClass([_this.inputWrapper.buttons[0]], SELECTED);\n }, close: function () {\n removeClass([_this.inputWrapper.buttons[0]], SELECTED);\n _this.unWireListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObj.element);\n _this.popupObj.destroy();\n _this.popupWrapper.innerHTML = '';\n _this.listWrapper = _this.popupWrapper = _this.listTag = undefined;\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (!Browser.isDevice) {\n this.popupObj.collision = { X: 'none', Y: 'flip' };\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.popupObj.element.style.maxHeight = \"100%\";\n this.popupObj.element.style.width = \"100%\";\n }\n else {\n this.popupObj.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select time\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.timePopupCloseHandler, this);\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n this.popupWrapper.insertBefore(modelHeader, this.popupWrapper.firstElementChild);\n }\n };\n TimePicker.prototype.timePopupCloseHandler = function (e) {\n this.hide();\n };\n //util function\n TimePicker.prototype.getFormattedValue = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { skeleton: 'medium', type: 'time' });\n }\n };\n TimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = !this.isNullOrEmpty(this.initValue);\n if (this.checkDateValue(dateValue)) {\n var date = value ? this.initValue.getDate() : DAY;\n var month = value ? this.initValue.getMonth() : MONTH;\n var year = value ? this.initValue.getFullYear() : YEAR;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds());\n }\n }\n return null;\n };\n TimePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassesValue = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassesValue !== '') {\n addClass([this.inputWrapper.container], updatedClassesValue.split(' '));\n }\n }\n else if (key === 'style') {\n var timeStyle = this.inputWrapper.container.getAttribute(key);\n timeStyle = !isNullOrUndefined(timeStyle) ? (timeStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.inputWrapper.container.setAttribute(key, timeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n TimePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n TimePicker.prototype.updateCssClass = function (cssClassNew, cssClassOld) {\n if (!isNullOrUndefined(cssClassOld)) {\n cssClassOld = (cssClassOld.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssClassNew)) {\n cssClassNew = (cssClassNew.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssClassNew, [this.inputWrapper.container], cssClassOld);\n if (this.popupWrapper) {\n Input.setCssClass(cssClassNew, [this.popupWrapper], cssClassOld);\n }\n };\n TimePicker.prototype.removeErrorClass = function () {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n };\n TimePicker.prototype.checkErrorState = function (val) {\n var value = this.getDateObject(val);\n if ((this.validateState(value) && !this.invalidValueString) ||\n (this.enableMask && this.inputElement.value === this.maskedDateValue)) {\n this.removeErrorClass();\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n };\n TimePicker.prototype.validateInterval = function () {\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.enableElement([this.inputWrapper.buttons[0]]);\n }\n else {\n this.disableTimeIcon();\n }\n };\n TimePicker.prototype.disableTimeIcon = function () {\n this.disableElement([this.inputWrapper.buttons[0]]);\n this.hide();\n };\n TimePicker.prototype.disableElement = function (element) {\n addClass(element, DISABLED);\n };\n TimePicker.prototype.enableElement = function (element) {\n removeClass(element, DISABLED);\n };\n TimePicker.prototype.selectInputText = function () {\n this.inputElement.setSelectionRange(0, (this.inputElement).value.length);\n };\n TimePicker.prototype.setCursorToEnd = function () {\n this.inputElement.setSelectionRange((this.inputElement).value.length, (this.inputElement).value.length);\n };\n TimePicker.prototype.getMeridianText = function () {\n var meridian;\n if (this.locale === 'en' || this.locale === 'en-US') {\n meridian = getValue('dayPeriods.format.wide', getDefaultDateObject());\n }\n else {\n var gregorianFormat = '.dates.calendars.gregorian.dayPeriods.format.abbreviated';\n var mainVal = 'main.';\n meridian = getValue(mainVal + '' + this.locale + gregorianFormat, cldrData);\n }\n return meridian;\n };\n TimePicker.prototype.getCursorSelection = function () {\n var input = (this.inputElement);\n var start = 0;\n var end = 0;\n if (!isNaN(input.selectionStart)) {\n start = input.selectionStart;\n end = input.selectionEnd;\n }\n return { start: Math.abs(start), end: Math.abs(end) };\n };\n TimePicker.prototype.getActiveElement = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n return this.popupWrapper.querySelectorAll('.' + SELECTED);\n }\n else {\n return null;\n }\n };\n TimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n TimePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n };\n TimePicker.prototype.setPopupWidth = function (width) {\n width = this.setWidth(width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n TimePicker.prototype.setScrollPosition = function () {\n var element = this.selectedElement;\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else if (this.popupWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n TimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextEle = element.nextElementSibling;\n var height = nextEle ? nextEle.offsetTop : element.offsetTop;\n var liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.popupWrapper.scrollTop = nextEle ? (height - (listHeight / HALFPOSITION + liHeight / HALFPOSITION)) : height;\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.setScrollTo = function () {\n var element;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.getText = function () {\n return (isNullOrUndefined(this.checkDateValue(this.value))) ? '' : this.getValue(this.value);\n };\n TimePicker.prototype.getValue = function (value) {\n return (isNullOrUndefined(this.checkDateValue(value))) ? null : this.globalize.formatDate(value, {\n format: this.cldrTimeFormat(), type: 'time'\n });\n };\n TimePicker.prototype.cldrDateFormat = function () {\n var cldrDate;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDate = (getValue('dateFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDate = (this.getCultureDateObject(cldrData, '' + this.locale));\n }\n return cldrDate;\n };\n TimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.formatString)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.dateToNumeric = function () {\n var cldrTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.medium', getDefaultDateObject()));\n }\n else {\n cldrTime = (getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.medium', cldrData));\n }\n return cldrTime;\n };\n TimePicker.prototype.getExactDateTime = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { format: this.dateToNumeric(), type: 'time' });\n }\n };\n TimePicker.prototype.setValue = function (value) {\n var time = this.checkValue(value);\n if (!this.strictMode && !this.validateState(time)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n if (this.isNullOrEmpty(time)) {\n this.initValue = null;\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.initValue = this.compareFormatChange(time);\n }\n }\n this.updateInput(true, this.initValue);\n };\n TimePicker.prototype.compareFormatChange = function (value) {\n if (isNullOrUndefined(value)) {\n return null;\n }\n return (value !== this.getText()) ? this.getDateObject(value) : this.getDateObject(this.value);\n };\n TimePicker.prototype.updatePlaceHolder = function () {\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n };\n //event related functions\n TimePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n TimePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n this.interopAdaptor.invokeMethodAsync('OnTimeIconClick');\n };\n TimePicker.prototype.popupHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n e.preventDefault();\n if (this.isPopupOpen()) {\n this.closePopup(0, e);\n }\n else {\n this.inputElement.focus();\n this.show(e);\n }\n };\n TimePicker.prototype.mouseDownHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.readonly) {\n this.inputElement.setSelectionRange(0, 0);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n }\n };\n TimePicker.prototype.mouseUpHandler = function (event) {\n if (!this.readonly) {\n event.preventDefault();\n if (this.enableMask) {\n event.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n return;\n }\n else {\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n var curPos = this.getCursorSelection();\n if (!(curPos.start === 0 && curPos.end === this.inputElement.value.length)) {\n if (this.inputElement.value.length > 0) {\n this.cursorDetails = this.focusSelection();\n }\n this.inputElement.setSelectionRange(this.cursorDetails.start, this.cursorDetails.end);\n }\n }\n }\n };\n TimePicker.prototype.focusSelection = function () {\n var regex = new RegExp('^[a-zA-Z0-9]+$');\n var split = this.inputElement.value.split('');\n split.push(' ');\n var curPos = this.getCursorSelection();\n var start = 0;\n var end = 0;\n var isSeparator = false;\n if (!this.isTextSelected) {\n for (var i = 0; i < split.length; i++) {\n if (!regex.test(split[i])) {\n end = i;\n isSeparator = true;\n }\n if (isSeparator) {\n if (curPos.start >= start && curPos.end <= end) {\n // eslint-disable-next-line no-self-assign\n end = end;\n this.isTextSelected = true;\n break;\n }\n else {\n start = i + 1;\n isSeparator = false;\n }\n }\n }\n }\n else {\n start = curPos.start;\n end = curPos.end;\n this.isTextSelected = false;\n }\n return { start: start, end: end };\n };\n TimePicker.prototype.inputHandler = function (event) {\n if (!this.readonly && this.enabled) {\n if (!((event.action == 'right' || event.action == 'left' || event.action == 'tab') || ((event.action == 'home' || event.action == 'end' || event.action == 'up' || event.action == 'down') && !this.isPopupOpen() && !this.enableMask))) {\n event.preventDefault();\n }\n switch (event.action) {\n case 'home':\n case 'end':\n case 'up':\n case 'down':\n if (!this.isPopupOpen()) {\n this.popupCreation();\n this.popupObj.destroy();\n this.popupObj = this.popupWrapper = null;\n }\n if (this.enableMask && !this.readonly && !this.isPopupOpen()) {\n event.preventDefault();\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: event\n });\n }\n if (this.isPopupOpen()) {\n this.keyHandler(event);\n }\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.updateValue(this.valueWithMinutes, event);\n }\n else {\n this.updateValue(this.inputElement.value, event);\n }\n this.hide();\n this.isNavigate = false;\n if (this.isPopupOpen()) {\n event.stopPropagation();\n }\n break;\n case 'open':\n this.show(event);\n break;\n case 'escape':\n this.updateInputValue(this.objToString(this.value));\n if (this.enableMask) {\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.previousState(this.value);\n this.hide();\n break;\n case 'close':\n this.hide();\n break;\n case 'right':\n case 'left':\n case 'tab':\n case 'shiftTab':\n if (!this.isPopupOpen() && this.enableMask && !this.readonly) {\n if ((this.inputElement.selectionStart === 0 && this.inputElement.selectionEnd === this.inputElement.value.length) ||\n (this.inputElement.selectionEnd !== this.inputElement.value.length && event.action === 'tab') ||\n (this.inputElement.selectionStart !== 0 && event.action === 'shiftTab') || (event.action === 'left' || event.action === 'right')) {\n event.preventDefault();\n }\n this.notify('keyDownHandler', { module: 'MaskedDateTime',\n e: event\n });\n }\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n TimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n this.setSelection(li, event);\n if (li && li.classList.contains(LISTCLASS)) {\n this.hide();\n }\n };\n TimePicker.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (this.isPopupOpen() && this.popupWrapper) {\n var args = {\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n name: 'open'\n };\n removeClass([document.body], OVERFLOW);\n this.trigger('close', args, function (args) {\n if (!args.cancel) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: delay ? delay : 0\n };\n _this.popupObj.hide(new Animation(animModel));\n removeClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n EventHandler.remove(document, 'mousedown touchstart', _this.documentClickHandler);\n }\n if (Browser.isDevice && _this.modal) {\n _this.modal.style.display = 'none';\n _this.modal.outerHTML = '';\n _this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(_this.mobileTimePopupWrap)) {\n _this.mobileTimePopupWrap.remove();\n _this.mobileTimePopupWrap = null;\n }\n }\n if (Browser.isDevice && _this.allowEdit && !_this.readonly) {\n _this.inputElement.removeAttribute('readonly');\n }\n });\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n TimePicker.prototype.disposeServerPopup = function () {\n if (this.popupWrapper) {\n this.popupWrapper.style.visibility = 'hidden';\n this.popupWrapper.style.top = '-9999px';\n this.popupWrapper.style.left = '-9999px';\n this.popupWrapper.style.width = '0px';\n this.popupWrapper.style.height = '0px';\n }\n };\n TimePicker.prototype.checkValueChange = function (event, isNavigation) {\n if (!this.strictMode && !this.validateState(this.valueWithMinutes)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.setProperties({ value: this.compareFormatChange(this.inputElement.value) }, true);\n this.initValue = this.valueWithMinutes = this.compareFormatChange(this.inputElement.value);\n this.prevValue = this.inputElement.value;\n if (+this.prevDate !== +this.value) {\n this.changeEvent(event);\n }\n }\n else {\n if (!isNavigation) {\n if ((this.prevValue !== this.inputElement.value) || isNullOrUndefined(this.checkDateValue(this.value))) {\n this.valueProcess(event, this.compareFormatChange(this.inputElement.value));\n }\n }\n else {\n var value = this.getDateObject(new Date(this.timeCollections[this.activeIndex]));\n if (+this.prevDate !== +value) {\n this.valueProcess(event, value);\n }\n }\n }\n };\n TimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setHover(currentLi, HOVER);\n };\n TimePicker.prototype.setHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeHover(className);\n addClass([li], className);\n if (className === NAVIGATION) {\n li.setAttribute('aria-selected', 'true');\n }\n }\n };\n TimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li)) {\n this.checkValue(li.getAttribute('data-value'));\n if (this.enableMask) {\n this.createMask();\n }\n this.selectedElement = li;\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.checkValueChange(event, true);\n }\n };\n TimePicker.prototype.onMouseLeave = function () {\n this.removeHover(HOVER);\n };\n TimePicker.prototype.scrollHandler = function () {\n if (this.getModuleName() === 'timepicker' && Browser.isDevice) {\n return;\n }\n else {\n this.hide();\n }\n };\n TimePicker.prototype.setMinMax = function (minVal, maxVal) {\n if (isNullOrUndefined(this.checkDateValue(minVal))) {\n this.initMin = this.getDateObject('12:00:00 AM');\n }\n if (isNullOrUndefined(this.checkDateValue(maxVal))) {\n this.initMax = this.getDateObject('11:59:59 PM');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.validateMinMax = function (dateVal, minVal, maxVal) {\n var value = dateVal instanceof Date ? dateVal : this.getDateObject(dateVal);\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n dateVal = this.strictOperation(this.initMin, this.initMax, dateVal, value);\n }\n else if (+(this.createDateObj(this.getFormattedValue(this.initMin))) >\n +(this.createDateObj(this.getFormattedValue(this.initMax)))) {\n this.disableTimeIcon();\n }\n if (this.strictMode) {\n dateVal = this.valueIsDisable(dateVal) ? dateVal : null;\n }\n this.checkErrorState(dateVal);\n return dateVal;\n };\n TimePicker.prototype.valueIsDisable = function (value) {\n if (this.disableItemCollection.length > 0) {\n if (this.disableItemCollection.length === this.timeCollections.length) {\n return false;\n }\n var time = value instanceof Date ? this.objToString(value) : value;\n for (var index = 0; index < this.disableItemCollection.length; index++) {\n if (time === this.disableItemCollection[index]) {\n return false;\n }\n }\n }\n return true;\n };\n TimePicker.prototype.validateState = function (val) {\n if (!this.strictMode) {\n if (this.valueIsDisable(val)) {\n var value = typeof val === 'string' ? this.setCurrentDate(this.getDateObject(val)) :\n this.setCurrentDate(this.getDateObject(val));\n var maxValue = this.setCurrentDate(this.getDateObject(this.initMax));\n var minValue = this.setCurrentDate(this.getDateObject(this.initMin));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n if ((+(value) > +(maxValue)) || (+(value) < +(minValue))) {\n return false;\n }\n }\n else {\n if ((+(maxValue) < +(minValue)) || this.inputElement.value !== '') {\n return false;\n }\n }\n }\n else {\n return false;\n }\n }\n return true;\n };\n TimePicker.prototype.strictOperation = function (minimum, maximum, dateVal, val) {\n var maxValue = this.createDateObj(this.getFormattedValue(maximum));\n var minValue = this.createDateObj(this.getFormattedValue(minimum));\n var value = this.createDateObj(this.getFormattedValue(val));\n if (this.strictMode) {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n this.initValue = this.getDateObject(maxValue);\n this.updateInputValue(this.getValue(this.initValue));\n if (this.enableMask) {\n this.createMask();\n }\n return this.inputElement.value;\n }\n else if (+minValue >= +value) {\n return this.getDateObject(minValue);\n }\n else if (+value >= +maxValue || +minValue === +maxValue) {\n return this.getDateObject(maxValue);\n }\n }\n else {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n if (!isNaN(+this.createDateObj(dateVal))) {\n return dateVal;\n }\n }\n }\n return dateVal;\n };\n TimePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.popupHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n EventHandler.add(this.inputElement, 'input', this.inputEventHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyConfigure = extend(this.keyConfigure, this.keyConfigs);\n this.inputEvent = new KeyboardEvents(this.inputWrapper.container, {\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n if (this.showClearButton && this.inputElement) {\n EventHandler.add(this.inputElement, 'mousedown', this.mouseDownHandler, this);\n }\n }\n };\n TimePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n TimePicker.prototype.formResetHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var timeValue = this.inputElement.getAttribute('value');\n var val = this.checkDateValue(this.inputEleValue);\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n val = null;\n timeValue = '';\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: val }, true);\n this.prevDate = this.value;\n this.valueWithMinutes = this.value;\n this.initValue = this.value;\n if (this.inputElement) {\n this.updateInputValue(timeValue);\n if (this.enableMask) {\n if (!timeValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.checkErrorState(timeValue);\n this.prevValue = this.inputElement.value;\n }\n }\n };\n TimePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n TimePicker.prototype.inputEventHandler = function () {\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n TimePicker.prototype.unBindEvents = function () {\n if (this.inputWrapper) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.popupHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'input', this.inputEventHandler);\n if (this.inputEvent) {\n this.inputEvent.destroy();\n }\n EventHandler.remove(this.inputElement, 'mousedown touchstart', this.mouseDownHandler);\n if (this.showClearButton && !isNullOrUndefined(this.inputWrapper) && !isNullOrUndefined(this.inputWrapper.clearButton)) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.clearHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n TimePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n };\n TimePicker.prototype.raiseClearedEvent = function (e) {\n var clearedArgs = {\n event: e\n };\n this.trigger('cleared', clearedArgs);\n };\n TimePicker.prototype.clearHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n if (!isNullOrUndefined(this.value)) {\n this.clear(e);\n }\n else {\n this.resetState();\n this.raiseClearedEvent(e);\n }\n if (this.popupWrapper) {\n this.popupWrapper.scrollTop = 0;\n }\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n TimePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.initValue = null;\n this.resetState();\n this.raiseClearedEvent(event);\n this.changeEvent(event);\n };\n TimePicker.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.zIndex = this.zIndex;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['step', 'disabled', 'readonly', 'style', 'name', 'value', 'min', 'max', 'placeholder'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'style':\n this.inputStyle = this.inputElement.getAttribute(prop);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.initValue = value;\n this.updateInput(false, this.initValue);\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n TimePicker.prototype.setCurrentDate = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n return new Date(YEAR, MONTH, DAY, value.getHours(), value.getMinutes(), value.getSeconds());\n };\n TimePicker.prototype.getTextFormat = function () {\n var time = 0;\n if (this.cldrTimeFormat().split(' ')[0] === 'a' || this.cldrTimeFormat().indexOf('a') === 0) {\n time = 1;\n }\n else if (this.cldrTimeFormat().indexOf('a') < 0) {\n var strArray = this.cldrTimeFormat().split(' ');\n for (var i = 0; i < strArray.length; i++) {\n if (strArray[i].toLowerCase().indexOf('h') >= 0) {\n time = i;\n break;\n }\n }\n }\n return time;\n };\n TimePicker.prototype.updateValue = function (value, event) {\n var val;\n if (this.isNullOrEmpty(value)) {\n this.resetState();\n }\n else {\n val = this.checkValue(value);\n if (this.strictMode) {\n // this case set previous value to the text box when set invalid date\n var inputVal = (val === null && value.trim().length > 0) ?\n this.previousState(this.prevDate) : this.inputElement.value;\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n if (!inputVal) {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(val) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(val) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n }\n this.checkValueChange(event, typeof value === 'string' ? false : true);\n };\n TimePicker.prototype.previousState = function (date) {\n var value = this.getDateObject(date);\n for (var i = 0; i < this.timeCollections.length; i++) {\n if (+value === this.timeCollections[i]) {\n this.activeIndex = i;\n this.selectedElement = this.liCollections[i];\n this.valueWithMinutes = new Date(this.timeCollections[i]);\n break;\n }\n }\n return this.prevValue;\n };\n TimePicker.prototype.resetState = function () {\n this.removeSelection();\n Input.setValue('', this.inputElement, this.floatLabelType, false);\n this.valueWithMinutes = this.activeIndex = null;\n if (!this.strictMode) {\n this.checkErrorState(null);\n }\n };\n TimePicker.prototype.objToString = function (val) {\n if (isNullOrUndefined(this.checkDateValue(val))) {\n return null;\n }\n else {\n return this.globalize.formatDate(val, { format: this.cldrTimeFormat(), type: 'time' });\n }\n };\n TimePicker.prototype.checkValue = function (value) {\n if (!this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.validateValue(date, value);\n }\n this.resetState();\n return this.valueWithMinutes = null;\n };\n TimePicker.prototype.validateValue = function (date, value) {\n var time;\n var val = this.validateMinMax(value, this.min, this.max);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== this.getFormattedValue(this.value)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = this.objToString(this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = this.objToString(this.valueWithMinutes);\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n var value_1 = val.trim().length > 0 ? val : '';\n this.updateInputValue(value_1);\n if (this.enableMask) {\n if (!value_1) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n else {\n this.updateInputValue(time);\n if (this.enableMask) {\n if (time === '') {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(time) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(time) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n return time;\n };\n TimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n TimePicker.prototype.findNextElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var timeVal = null;\n var count = this.liCollections.length;\n var collections = this.timeCollections;\n if (!isNullOrUndefined(this.checkDateValue(value)) || !isNullOrUndefined(this.activeIndex)) {\n if (event.action === 'home') {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(collections.length - 1, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < count; i++) {\n if (+value < this.timeCollections[i]) {\n var index = this.validLiElement(i);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === count - 1) {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n else {\n for (var i = count - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n var index = this.validLiElement(i, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === 0) {\n var index = this.validLiElement(count - 1);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(isNullOrUndefined(timeVal) ? null : new Date(timeVal));\n }\n else {\n this.selectNextItem(event);\n }\n };\n TimePicker.prototype.selectNextItem = function (event) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n };\n TimePicker.prototype.elementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.checkValue(value);\n }\n };\n TimePicker.prototype.validLiElement = function (index, backward) {\n var elementIndex = null;\n var items = isNullOrUndefined(this.popupWrapper) ? this.liCollections :\n this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n var isCheck = true;\n if (items.length) {\n if (backward) {\n for (var i = index; i >= 0; i--) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === 0) {\n if (isCheck) {\n index = i = items.length;\n isCheck = false;\n }\n }\n }\n }\n else {\n for (var i = index; i <= items.length - 1; i++) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === items.length - 1) {\n if (isCheck) {\n index = i = -1;\n isCheck = false;\n }\n }\n }\n }\n }\n return elementIndex;\n };\n TimePicker.prototype.keyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0 || !isNullOrUndefined(this.inputWrapper)\n && this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n return;\n }\n var count = this.timeCollections.length;\n if (isNullOrUndefined(this.getActiveElement()) || this.getActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n var nextItem = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (count) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (count - 1) : this.activeIndex;\n this.activeIndex = index = this.validLiElement(this.activeIndex, (event.keyCode === 40 || event.keyCode === 39) ?\n false : true);\n nextItem = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n var index = this.validLiElement(0);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(count - 1, true);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(new Date(nextItem));\n }\n this.isNavigate = true;\n this.setHover(this.selectedElement, NAVIGATION);\n this.setActiveDescendant();\n if (this.enableMask) {\n this.selectInputText();\n }\n if (this.isPopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setScrollPosition();\n }\n };\n TimePicker.prototype.getCultureTimeObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.timeFormats.short', ld);\n };\n TimePicker.prototype.getCultureDateObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.dateFormats.short', ld);\n };\n TimePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n TimePicker.prototype.unWireListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n if (!Browser.isDevice) {\n EventHandler.remove(this.listWrapper, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.listWrapper, 'mouseout', this.onMouseLeave);\n }\n }\n };\n TimePicker.prototype.valueProcess = function (event, value) {\n var result = (isNullOrUndefined(this.checkDateValue(value))) ? null : value;\n if (+this.prevDate !== +result) {\n this.initValue = result;\n this.changeEvent(event);\n }\n };\n TimePicker.prototype.changeEvent = function (e) {\n this.addSelection();\n this.updateInput(true, this.initValue);\n var eventArgs = {\n event: (e || null),\n value: this.value,\n text: (this.inputElement).value,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n eventArgs.value = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n this.prevDate = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.invalidValueString = null;\n this.checkErrorState(this.value);\n };\n TimePicker.prototype.updateInput = function (isUpdate, date) {\n if (isUpdate) {\n this.prevValue = this.getValue(date);\n }\n this.prevDate = this.valueWithMinutes = date;\n if ((typeof date !== 'number') || (this.value && +new Date(+this.value).setMilliseconds(0)) !== +date) {\n this.setProperties({ value: date }, true);\n if (this.enableMask && this.value) {\n this.createMask();\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.checkErrorState(this.invalidValueString);\n this.updateInputValue(this.invalidValueString);\n }\n this.clearIconState();\n };\n TimePicker.prototype.setActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n TimePicker.prototype.removeSelection = function () {\n this.removeHover(HOVER);\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + SELECTED);\n if (items.length) {\n removeClass(items, SELECTED);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.removeHover = function (className) {\n var hoveredItem = this.getHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n if (className === NAVIGATION) {\n hoveredItem[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.getHoverItem = function (className) {\n var hoveredItem;\n if (!isNullOrUndefined(this.popupWrapper)) {\n hoveredItem = this.popupWrapper.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n TimePicker.prototype.setActiveClass = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if ((this.timeCollections[i] === +this.getDateObject(this.valueWithMinutes))) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n };\n TimePicker.prototype.addSelection = function () {\n this.selectedElement = null;\n this.removeSelection();\n this.setActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n TimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n TimePicker.prototype.createDateObj = function (val) {\n var formatStr = null;\n var today = this.globalize.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n var value = null;\n if (typeof val === 'string') {\n if (val.toUpperCase().indexOf('AM') > -1 || val.toUpperCase().indexOf('PM') > -1) {\n today = this.defaultCulture.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n value = isNaN(+new Date(today + ' ' + val)) ? null : new Date(new Date(today + ' ' + val).setMilliseconds(0));\n if (isNullOrUndefined(value)) {\n value = this.timeParse(today, val);\n }\n }\n else {\n value = this.timeParse(today, val);\n }\n }\n else if (val instanceof Date) {\n value = val;\n }\n return value;\n };\n TimePicker.prototype.timeParse = function (today, val) {\n var value;\n value = this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.cldrTimeFormat(), type: 'datetime'\n });\n value = isNullOrUndefined(value) ? this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.dateToNumeric(), type: 'datetime'\n }) : value;\n value = isNullOrUndefined(value) ? value : new Date(value.setMilliseconds(0));\n return value;\n };\n TimePicker.prototype.createListItems = function () {\n var _this = this;\n this.listWrapper = this.createElement('div', { className: CONTENT, attrs: { 'tabindex': '-1' } });\n var start;\n var interval = this.step * 60000;\n var listItems = [];\n this.timeCollections = [];\n this.disableItemCollection = [];\n start = +(this.getDateObject(this.initMin).setMilliseconds(0));\n var end = +(this.getDateObject(this.initMax).setMilliseconds(0));\n while (end >= start) {\n this.timeCollections.push(start);\n listItems.push(this.globalize.formatDate(new Date(start), { format: this.cldrTimeFormat(), type: 'time' }));\n start += interval;\n }\n var listBaseOptions = {\n itemCreated: function (args) {\n var eventArgs = {\n element: args.item,\n text: args.text, value: _this.getDateObject(args.text), isDisabled: false\n };\n _this.trigger('itemRender', eventArgs, function (eventArgs) {\n if (eventArgs.isDisabled) {\n eventArgs.element.classList.add(DISABLED);\n }\n if (eventArgs.element.classList.contains(DISABLED)) {\n _this.disableItemCollection.push(eventArgs.element.getAttribute('data-value'));\n }\n });\n }\n };\n this.listTag = ListBase.createList(this.createElement, listItems, listBaseOptions, true);\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options', 'tabindex': '0' });\n append([this.listTag], this.listWrapper);\n };\n TimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) && target !== this.inputElement\n && target !== (this.inputWrapper && this.inputWrapper.buttons[0]) &&\n target !== (this.inputWrapper && this.inputWrapper.clearButton) &&\n target !== (this.inputWrapper && this.inputWrapper.container)) {\n if (this.isPopupOpen()) {\n this.hide();\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement)\n && (target === this.popupWrapper);\n }\n }\n };\n TimePicker.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement, this.floatLabelType);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hide();\n addClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.inputElement.tabIndex = -1;\n }\n };\n TimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.initMin = this.checkDateValue(new Date(this.checkInValue(date.min)));\n this.setProperties({ min: this.initMin }, true);\n }\n else {\n this.initMax = this.checkDateValue(new Date(this.checkInValue(date.max)));\n this.setProperties({ max: this.initMax }, true);\n }\n if (this.inputElement.value === '') {\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.checkValue(this.inputElement.value);\n }\n this.checkValueChange(null, false);\n };\n TimePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isPreventBlur && this.isPopupOpen()) {\n this.inputElement.focus();\n return;\n }\n this.closePopup(0, e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n if (this.getText() !== this.inputElement.value) {\n this.updateValue((this.inputElement).value, e);\n }\n else if (this.inputElement.value.trim().length === 0) {\n this.resetState();\n }\n this.cursorDetails = null;\n this.isNavigate = false;\n if (this.inputElement.value === '') {\n this.invalidValueString = null;\n }\n };\n /**\n * Focuses out the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n };\n TimePicker.prototype.isPopupOpen = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + ROOT)) {\n return true;\n }\n return false;\n };\n TimePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n var focusArguments = {\n model: this\n };\n if (!this.readonly && !Browser.isDevice && !this.enableMask) {\n this.selectInputText();\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n this.trigger('focus', focusArguments);\n this.clearIconState();\n if (this.openOnFocus) {\n this.show();\n }\n };\n /**\n * Focused the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Hides the TimePicker popup.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.hide = function () {\n this.closePopup(100, null);\n this.clearIconState();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup to show the list items.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.show = function (event) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupWrapper) {\n return;\n }\n else {\n this.popupCreation();\n if (Browser.isDevice && this.listWrapper) {\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n document.body.appendChild(this.modal);\n }\n if (Browser.isDevice) {\n this.mobileTimePopupWrap = this.createElement('div', { className: 'e-timepicker-mob-popup-wrap' });\n document.body.appendChild(this.mobileTimePopupWrap);\n }\n this.openPopupEventArgs = {\n popup: this.popupObj || null,\n cancel: false,\n event: event || null,\n name: 'open',\n appendTo: Browser.isDevice ? this.mobileTimePopupWrap : document.body\n };\n var eventArgs = this.openPopupEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.openPopupEventArgs = eventArgs;\n if (!_this.openPopupEventArgs.cancel && !_this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n _this.openPopupEventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupAlignment(_this.openPopupEventArgs);\n _this.setScrollPosition();\n if (!Browser.isDevice) {\n _this.inputElement.focus();\n }\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION\n };\n _this.popupObj.refreshPosition(_this.anchor);\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n _this.setActiveDescendant();\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n addClass([_this.inputWrapper.container], FOCUS);\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n _this.setOverlayIndex(_this.mobileTimePopupWrap, _this.popupObj.element, _this.modal, Browser.isDevice);\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.listTag = undefined;\n _this.liCollections = _this.timeCollections = _this.disableItemCollection = [];\n _this.popupObj = null;\n }\n });\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n TimePicker.prototype.setOverlayIndex = function (popupWrapper, timePopupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(timePopupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(timePopupElement.style.zIndex, 10) ? parseInt(timePopupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n TimePicker.prototype.formatValues = function (type) {\n var value;\n if (typeof type === 'number') {\n value = formatUnit(type);\n }\n else if (typeof type === 'string') {\n value = (type.match(/px|%|em/)) ? type : isNaN(parseInt(type, 10)) ? type : formatUnit(type);\n }\n return value;\n };\n TimePicker.prototype.popupAlignment = function (args) {\n args.popup.position.X = this.formatValues(args.popup.position.X);\n args.popup.position.Y = this.formatValues(args.popup.position.Y);\n if (!isNaN(parseFloat(args.popup.position.X)) || !isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.targetType = 'container';\n }\n if (!isNaN(parseFloat(args.popup.position.X))) {\n this.popupObj.offsetX = parseFloat(args.popup.position.X);\n }\n if (!isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.offsetY = parseFloat(args.popup.position.Y);\n }\n if (!Browser.isDevice) {\n switch (args.popup.position.X) {\n case 'left':\n break;\n case 'right':\n args.popup.offsetX = this.containerStyle.width;\n break;\n case 'center':\n args.popup.offsetX = -(this.containerStyle.width / 2);\n break;\n }\n switch (args.popup.position.Y) {\n case 'top':\n break;\n case 'bottom':\n break;\n case 'center':\n args.popup.offsetY = -(this.containerStyle.height / 2);\n break;\n }\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.inputWrapper.container;\n this.anchor = this.inputElement;\n this.popupObj.targetType = 'relative';\n }\n }\n else {\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.offsetY = 0;\n this.popupObj.targetType = 'container';\n this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n TimePicker.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TimePicker.prototype.getModuleName = function () {\n return 'timepicker';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {TimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement, this.floatLabelType);\n if (this.readonly) {\n this.hide();\n }\n this.setTimeAllowEdit();\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n this.setEnable();\n break;\n case 'allowEdit':\n this.setTimeAllowEdit();\n break;\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'locale':\n this.setProperties({ locale: newProp.locale }, true);\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.updatePlaceHolder();\n this.setValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'width':\n setStyleAttribute(this.inputWrapper.container, { 'width': this.setWidth(newProp.width) });\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkTimeFormat();\n this.setValue(this.value);\n if (this.enableMask) {\n this.createMask();\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'value':\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n if (!this.invalidValueString) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(newProp.value)) }, true);\n newProp.value = this.value;\n }\n else {\n if ((newProp.value && +new Date(+newProp.value).setMilliseconds(0)) !== +this.value) {\n newProp.value = this.checkDateValue(new Date('' + newProp.value));\n }\n }\n this.initValue = newProp.value;\n newProp.value = this.compareFormatChange(this.checkValue(newProp.value));\n }\n else {\n this.updateInputValue(this.invalidValueString);\n this.checkErrorState(this.invalidValueString);\n }\n if (this.enableMask && isNullOrUndefined(newProp.value)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n this.checkValueChange(null, false);\n if (this.isPopupOpen()) {\n this.setScrollPosition();\n }\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n if (newProp.strictMode) {\n this.checkErrorState(null);\n }\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.checkValue((this.inputElement).value);\n this.checkValueChange(null, false);\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo)))) {\n if (this.popupWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n }\n }\n };\n TimePicker.prototype.checkInValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property({})\n ], TimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('Never')\n ], TimePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(1000)\n ], TimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(30)\n ], TimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], TimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"itemRender\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"focus\", void 0);\n TimePicker = __decorate([\n NotifyPropertyChanges\n ], TimePicker);\n return TimePicker;\n}(Component));\nexport { TimePicker };\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n///\nimport { EventHandler, Internationalization, Property, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { Animation, Event, cldrData, getDefaultDateObject, detach } from '@syncfusion/ej2-base';\nimport { createElement, remove, addClass, L10n, removeClass, closest, append, attributes } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, isNullOrUndefined, formatUnit, getValue, rippleEffect } from '@syncfusion/ej2-base';\nimport { extend } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DatePicker } from '../datepicker/datepicker';\nimport { TimePickerBase } from '../timepicker/timepicker';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar DATEPICKERROOT = 'e-datepicker';\nvar DATETIMEWRAPPER = 'e-datetime-wrapper';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar HOUR = new Date().getHours();\nvar MINUTE = new Date().getMinutes();\nvar SECOND = new Date().getSeconds();\nvar MILLISECOND = new Date().getMilliseconds();\nvar ROOT = 'e-datetimepicker';\nvar DATETIMEPOPUPWRAPPER = 'e-datetimepopup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar TIMEICON = 'e-time-icon';\nvar INPUTFOCUS = 'e-input-focus';\nvar POPUPDIMENSION = '250px';\nvar ICONANIMATION = 'e-icon-anim';\nvar DISABLED = 'e-disabled';\nvar ERROR = 'e-error';\nvar CONTENT = 'e-content';\nvar NAVIGATION = 'e-navigation';\nvar ACTIVE = 'e-active';\nvar HOVER = 'e-hover';\nvar ICONS = 'e-icons';\nvar HALFPOSITION = 2;\nvar LISTCLASS = 'e-list-item';\nvar ANIMATIONDURATION = 100;\nvar OVERFLOW = 'e-time-overflow';\n/**\n * Represents the DateTimePicker component that allows user to select\n * or enter a date time value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateTimePicker = /** @class */ (function (_super) {\n __extends(DateTimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DateTimePickerModel} options - Specifies the DateTimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DateTimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.valueWithMinutes = null;\n _this.scrollInvoked = false;\n _this.moduleName = _this.getModuleName();\n _this.dateTimeOptions = options;\n return _this;\n }\n DateTimePicker.prototype.focusHandler = function () {\n if (!this.enabled) {\n return;\n }\n addClass([this.inputWrapper.container], INPUTFOCUS);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusIn = function () {\n _super.prototype.focusIn.call(this);\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n DateTimePicker.prototype.blurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isTimePopupOpen() && this.isPreventBlur) {\n this.inputElement.focus();\n return;\n }\n removeClass([this.inputWrapper.container], INPUTFOCUS);\n var blurArguments = {\n model: this\n };\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n this.trigger('blur', blurArguments);\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.destroy = function () {\n if (this.popupObject && this.popupObject.element.classList.contains(POPUP)) {\n this.popupObject.destroy();\n detach(this.dateTimeWrapper);\n this.dateTimeWrapper = undefined;\n this.liCollections = this.timeCollections = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n }\n var ariaAttribute = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-invalid': 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObject = this.popupWrapper = null;\n this.keyboardHandler.destroy();\n }\n this.unBindInputEvents();\n this.liCollections = null;\n this.rippleFn = null;\n this.selectedElement = null;\n this.listTag = null;\n this.timeIcon = null;\n this.popupObject = null;\n this.preventArgs = null;\n this.keyboardModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DateTimePicker.prototype.render = function () {\n this.timekeyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.valueWithMinutes = null;\n this.previousDateTime = null;\n this.isPreventBlur = false;\n this.cloneElement = this.element.cloneNode(true);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n this.initValue = this.value;\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n _super.prototype.updateHtmlAttributeToElement.call(this);\n this.checkAttributes(false);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('datetimepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n _super.prototype.render.call(this);\n this.createInputElement();\n _super.prototype.updateHtmlAttributeToWrapper.call(this);\n this.bindInputEvents();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.setValue(true);\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(this.scrollTo))) }, true);\n this.previousDateTime = this.value && new Date(+this.value);\n if (this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n }\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n this.renderComplete();\n };\n DateTimePicker.prototype.setValue = function (isDynamic) {\n if (isDynamic === void 0) { isDynamic = false; }\n this.initValue = this.validateMinMaxRange(this.value);\n if (!this.strictMode && this.isDateObject(this.initValue)) {\n var value = this.validateMinMaxRange(this.initValue);\n Input.setValue(this.getFormattedValue(value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value }, true);\n }\n else {\n if (isNullOrUndefined(this.value)) {\n this.initValue = null;\n this.setProperties({ value: null }, true);\n }\n }\n this.valueWithMinutes = this.value;\n _super.prototype.updateInput.call(this, isDynamic);\n };\n DateTimePicker.prototype.validateMinMaxRange = function (value) {\n var result = value;\n if (this.isDateObject(value)) {\n result = this.validateValue(value);\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n }\n }\n this.checkValidState(result);\n return result;\n };\n DateTimePicker.prototype.checkValidState = function (value) {\n this.isValidState = true;\n if (!this.strictMode) {\n if ((+(value) > +(this.max)) || (+(value) < +(this.min))) {\n this.isValidState = false;\n }\n }\n this.checkErrorState();\n };\n DateTimePicker.prototype.checkErrorState = function () {\n if (this.isValidState) {\n removeClass([this.inputWrapper.container], ERROR);\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n }\n attributes(this.inputElement, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n DateTimePicker.prototype.validateValue = function (value) {\n var dateVal = value;\n if (this.strictMode) {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = this.max;\n }\n else if (+value < +this.min) {\n dateVal = this.min;\n }\n else if (+value > +this.max) {\n dateVal = this.max;\n }\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = value;\n }\n }\n return dateVal;\n };\n DateTimePicker.prototype.disablePopupButton = function (isDisable) {\n if (isDisable) {\n addClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n this.hide();\n }\n else {\n removeClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n }\n };\n DateTimePicker.prototype.getFormattedValue = function (value) {\n var dateOptions;\n if (!isNullOrUndefined(value)) {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n return this.globalize.formatDate(value, dateOptions);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.isDateObject = function (value) {\n return (!isNullOrUndefined(value) && !isNaN(+value)) ? true : false;\n };\n DateTimePicker.prototype.createInputElement = function () {\n removeClass([this.inputElement], DATEPICKERROOT);\n removeClass([this.inputWrapper.container], DATEWRAPPER);\n addClass([this.inputWrapper.container], DATETIMEWRAPPER);\n addClass([this.inputElement], ROOT);\n this.renderTimeIcon();\n };\n DateTimePicker.prototype.renderTimeIcon = function () {\n this.timeIcon = Input.appendSpan(INPUTWRAPPER + ' ' + TIMEICON + ' ' + ICONS, this.inputWrapper.container);\n };\n DateTimePicker.prototype.bindInputEvents = function () {\n EventHandler.add(this.timeIcon, 'mousedown', this.timeHandler, this);\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.blurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.focusHandler, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardHandler = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyAction.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DateTimePicker.prototype.unBindInputEvents = function () {\n EventHandler.remove(this.timeIcon, 'mousedown touchstart', this.timeHandler);\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateHandler);\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'blur', this.blurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.focusHandler);\n }\n if (this.keyboardHandler) {\n this.keyboardHandler.destroy();\n }\n };\n DateTimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.timeFormat)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.timeFormat;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.cldrDateTimeFormat = function () {\n var cldrTime;\n var culture = new Internationalization(this.locale);\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.getCldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.getCldrFormat = function (type) {\n var cldrDateTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTime;\n };\n DateTimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n DateTimePicker.prototype.getCultureTimeObject = function (ld, c) {\n if (this.calendarMode === 'Gregorian') {\n return getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.short', ld);\n }\n else {\n return getValue('main.' + '' + this.locale + '.dates.calendars.islamic.timeFormats.short', ld);\n }\n };\n DateTimePicker.prototype.timeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n if (e.currentTarget === this.timeIcon) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n else {\n this.inputElement.focus();\n this.popupCreation('time', e);\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n }\n this.isIconClicked = false;\n };\n DateTimePicker.prototype.dateHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (e.currentTarget === this.inputWrapper.buttons[0]) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n if (!isNullOrUndefined(this.popupWrapper)) {\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.show = function (type, e) {\n if ((this.enabled && this.readonly) || !this.enabled) {\n return;\n }\n else {\n if (type === 'time' && !this.dateTimeWrapper) {\n if (this.isDatePopupOpen()) {\n this.hide(e);\n }\n this.popupCreation('time', e);\n }\n else if (!this.popupObj) {\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n _super.prototype.show.call(this);\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.toggle = function (e) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n this.show('time', null);\n }\n else if (this.isTimePopupOpen()) {\n this.hide(e);\n _super.prototype.show.call(this, null, e);\n this.popupCreation('date', null);\n }\n else {\n this.show(null, e);\n }\n };\n DateTimePicker.prototype.listCreation = function () {\n var dateObject;\n if (this.calendarMode === 'Gregorian') {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime'\n });\n }\n else {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime', calendar: 'islamic'\n });\n }\n var value = isNullOrUndefined(this.value) ? this.inputElement.value !== '' ?\n dateObject : new Date() : this.value;\n this.valueWithMinutes = value;\n this.listWrapper = createElement('div', { className: CONTENT, attrs: { 'tabindex': '0' } });\n var min = this.startTime(value);\n var max = this.endTime(value);\n var listDetails = TimePickerBase.createListItems(this.createElement, min, max, this.globalize, this.cldrTimeFormat(), this.step);\n this.timeCollections = listDetails.collection;\n this.listTag = listDetails.list;\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n append([listDetails.list], this.listWrapper);\n this.wireTimeListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n DateTimePicker.prototype.popupCreation = function (type, e) {\n if (Browser.isDevice) {\n this.element.setAttribute('readonly', 'readonly');\n }\n if (type === 'date') {\n if (!this.readonly && this.popupWrapper) {\n addClass([this.popupWrapper], DATETIMEPOPUPWRAPPER);\n attributes(this.popupWrapper, { 'id': this.element.id + '_datepopup' });\n }\n }\n else {\n if (!this.readonly) {\n this.dateTimeWrapper = createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_timepopup', 'style': 'visibility:hidden ; display:block' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.dateTimeWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.listCreation();\n append([this.listWrapper], this.dateTimeWrapper);\n }\n document.body.appendChild(this.dateTimeWrapper);\n this.addTimeSelection();\n this.renderPopup();\n this.setTimeScrollPosition();\n this.openPopup(e);\n if (!Browser.isDevice || (Browser.isDevice && !this.fullScreenMode)) {\n this.popupObject.refreshPosition(this.inputElement);\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.dateTimeWrapper.style.left = '0px';\n }\n }\n }\n };\n DateTimePicker.prototype.openPopup = function (e) {\n var _this = this;\n this.preventArgs = {\n cancel: false,\n popup: this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (!_this.preventArgs.cancel && !_this.readonly) {\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObject.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObject.show(new Animation(openAnimation), null);\n }\n addClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n }\n });\n };\n DateTimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObject) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObject.element && this.popupObject.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + (this.popupObject && this.popupObject.element.id + '\"]'))) && target !== this.inputElement\n && target !== this.timeIcon && !isNullOrUndefined(this.inputWrapper) && target !== this.inputWrapper.container) {\n if (this.isTimePopupOpen()) {\n this.hide(event);\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = ((document.activeElement === this.inputElement) && (Browser.isIE || Browser.info.name === 'edge')\n && target === this.popupObject.element);\n }\n }\n };\n DateTimePicker.prototype.isTimePopupOpen = function () {\n return (this.dateTimeWrapper && this.dateTimeWrapper.classList.contains('' + ROOT)) ? true : false;\n };\n DateTimePicker.prototype.isDatePopupOpen = function () {\n return (this.popupWrapper && this.popupWrapper.classList.contains('' + DATETIMEPOPUPWRAPPER)) ? true : false;\n };\n DateTimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n if (Browser.isDevice) {\n this.timeModal = createElement('div');\n this.timeModal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n this.timeModal.style.display = 'block';\n document.body.appendChild(this.timeModal);\n }\n var offset = 4;\n this.popupObject = new Popup(this.dateTimeWrapper, {\n width: this.setPopupWidth(),\n zIndex: this.zIndex,\n targetType: 'container',\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n enableRtl: this.enableRtl,\n offsetY: offset,\n open: function () {\n _this.dateTimeWrapper.style.visibility = 'visible';\n addClass([_this.timeIcon], ACTIVE);\n if (!Browser.isDevice) {\n _this.timekeyConfigure = extend(_this.timekeyConfigure, _this.keyConfigs);\n _this.inputEvent = new KeyboardEvents(_this.inputWrapper.container, {\n keyAction: _this.timeKeyActionHandle.bind(_this),\n keyConfigs: _this.timekeyConfigure,\n eventName: 'keydown'\n });\n }\n }, close: function () {\n removeClass([_this.timeIcon], ACTIVE);\n _this.unWireTimeListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObject.element);\n _this.popupObject.destroy();\n _this.dateTimeWrapper.innerHTML = '';\n _this.listWrapper = _this.dateTimeWrapper = undefined;\n if (_this.inputEvent) {\n _this.inputEvent.destroy();\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (Browser.isDevice && this.fullScreenMode) {\n this.popupObject.element.style.display = \"flex\";\n this.popupObject.element.style.maxHeight = \"100%\";\n this.popupObject.element.style.width = \"100%\";\n }\n else {\n this.popupObject.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelWrapper = createElement('div', { className: 'e-datetime-mob-popup-wrap' });\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select time\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.dateTimeCloseHandler, this);\n var timeContent = this.dateTimeWrapper.querySelector(\".e-content\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n modelWrapper.appendChild(modelHeader);\n modelWrapper.appendChild(timeContent);\n this.dateTimeWrapper.insertBefore(modelWrapper, this.dateTimeWrapper.firstElementChild);\n }\n };\n DateTimePicker.prototype.dateTimeCloseHandler = function (e) {\n this.hide();\n };\n DateTimePicker.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n // eslint-disable-next-line no-self-assign\n width = width;\n }\n else {\n width = '100%';\n }\n return width;\n };\n DateTimePicker.prototype.setPopupWidth = function () {\n var width = this.setDimension(this.width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n DateTimePicker.prototype.wireTimeListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateTimePicker.prototype.unWireTimeListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n }\n };\n DateTimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setTimeHover(currentLi, HOVER);\n };\n DateTimePicker.prototype.onMouseLeave = function () {\n this.removeTimeHover(HOVER);\n };\n DateTimePicker.prototype.setTimeHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeTimeHover(className);\n addClass([li], className);\n }\n };\n DateTimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.dateTimeWrapper.getBoundingClientRect().height;\n if (Browser.isDevice && this.fullScreenMode) {\n return popupHeight;\n }\n else {\n return popupHeight > height ? height : popupHeight;\n }\n };\n DateTimePicker.prototype.changeEvent = function (e) {\n _super.prototype.changeEvent.call(this, e);\n if ((this.value && this.value.valueOf()) !== (this.previousDateTime && +this.previousDateTime.valueOf())) {\n this.valueWithMinutes = this.value;\n this.setInputValue('date');\n this.previousDateTime = this.value && new Date(+this.value);\n }\n };\n DateTimePicker.prototype.updateValue = function (e) {\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs = {\n value: this.value, event: e || null,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n this.addTimeSelection();\n this.trigger('change', this.changedArgs);\n this.previousDateTime = this.previousDate = this.value;\n }\n };\n DateTimePicker.prototype.setTimeScrollPosition = function () {\n var popupElement = this.selectedElement;\n if (!isNullOrUndefined(popupElement)) {\n this.findScrollTop(popupElement);\n }\n else if (this.dateTimeWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n DateTimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextElement = element.nextElementSibling;\n var height = nextElement ? nextElement.offsetTop : element.offsetTop;\n var lineHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n if (Browser.isDevice && this.fullScreenMode) {\n var listContent = this.dateTimeWrapper.querySelector('.e-content');\n listContent.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n else {\n this.dateTimeWrapper.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setScrollTo = function () {\n var element;\n var items = this.dateTimeWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length >= 0) {\n this.scrollInvoked = true;\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setInputValue = function (type) {\n if (type === 'date') {\n this.inputElement.value = this.previousElementValue = this.getFormattedValue(this.getFullDateTime());\n this.setProperties({ value: this.getFullDateTime() }, true);\n }\n else {\n var tempVal = this.getFormattedValue(new Date(this.timeCollections[this.activeIndex]));\n Input.setValue(tempVal, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousElementValue = this.inputElement.value;\n this.setProperties({ value: new Date(this.timeCollections[this.activeIndex]) }, true);\n if (this.enableMask) {\n this.createMask();\n }\n }\n this.updateIconState();\n };\n DateTimePicker.prototype.getFullDateTime = function () {\n var value = null;\n if (this.isDateObject(this.valueWithMinutes)) {\n value = this.combineDateTime(this.valueWithMinutes);\n }\n else {\n value = this.previousDate;\n }\n return this.validateMinMaxRange(value);\n };\n DateTimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n DateTimePicker.prototype.combineDateTime = function (value) {\n if (this.isDateObject(value)) {\n var day = this.previousDate.getDate();\n var month = this.previousDate.getMonth();\n var year = this.previousDate.getFullYear();\n var hour = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n return new Date(year, month, day, hour, minutes, seconds);\n }\n else {\n return this.previousDate;\n }\n };\n DateTimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS)) {\n this.timeValue = li.getAttribute('data-value');\n this.hide(event);\n }\n this.setSelection(li, event);\n };\n DateTimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li) && !li.classList.contains(ACTIVE)) {\n this.selectedElement = li;\n var index = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.activeIndex = index;\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.updateValue(event);\n }\n };\n DateTimePicker.prototype.setTimeActiveClass = function () {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n if (!isNullOrUndefined(collections)) {\n var items = collections.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if (this.timeCollections[i] === +(this.valueWithMinutes)) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n this.setTimeActiveDescendant();\n break;\n }\n }\n }\n }\n };\n DateTimePicker.prototype.setTimeActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DateTimePicker.prototype.addTimeSelection = function () {\n this.selectedElement = null;\n this.removeTimeSelection();\n this.setTimeActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n DateTimePicker.prototype.removeTimeSelection = function () {\n this.removeTimeHover(HOVER);\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n var items = this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n if (items.length) {\n removeClass(items, ACTIVE);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n DateTimePicker.prototype.removeTimeHover = function (className) {\n var hoveredItem = this.getTimeHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n }\n };\n DateTimePicker.prototype.getTimeHoverItem = function (className) {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n var hoveredItem;\n if (!isNullOrUndefined(collections)) {\n hoveredItem = collections.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n DateTimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n DateTimePicker.prototype.calculateStartEnd = function (value, range, method) {\n var day = value.getDate();\n var month = value.getMonth();\n var year = value.getFullYear();\n var hours = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n var milliseconds = value.getMilliseconds();\n if (range) {\n if (method === 'starttime') {\n return new Date(year, month, day, 0, 0, 0);\n }\n else {\n return new Date(year, month, day, 23, 59, 59);\n }\n }\n else {\n return new Date(year, month, day, hours, minutes, seconds, milliseconds);\n }\n };\n DateTimePicker.prototype.startTime = function (date) {\n var tempStartValue;\n var start;\n var tempMin = this.min;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMin.getDate() && +value.getMonth() === +tempMin.getMonth() &&\n +value.getFullYear() === +tempMin.getFullYear()) || ((+new Date(value.getFullYear(), value.getMonth(), value.getDate())) <=\n +new Date(tempMin.getFullYear(), tempMin.getMonth(), tempMin.getDate()))) {\n start = false;\n tempStartValue = this.min;\n }\n else if (+value < +this.max && +value > +this.min) {\n start = true;\n tempStartValue = value;\n }\n else if (+value >= +this.max) {\n start = true;\n tempStartValue = this.max;\n }\n return this.calculateStartEnd(tempStartValue, start, 'starttime');\n };\n DateTimePicker.prototype.endTime = function (date) {\n var tempEndValue;\n var end;\n var tempMax = this.max;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMax.getDate() && +value.getMonth() === +tempMax.getMonth() &&\n +value.getFullYear() === +tempMax.getFullYear()) || (+new Date(value.getUTCFullYear(), value.getMonth(), value.getDate()) >=\n +new Date(tempMax.getFullYear(), tempMax.getMonth(), tempMax.getDate()))) {\n end = false;\n tempEndValue = this.max;\n }\n else if (+value < +this.max && +value > +this.min) {\n end = true;\n tempEndValue = value;\n }\n else if (+value <= +this.min) {\n end = true;\n tempEndValue = this.min;\n }\n return this.calculateStartEnd(tempEndValue, end, 'endtime');\n };\n DateTimePicker.prototype.hide = function (e) {\n var _this = this;\n if (this.popupObj || this.dateTimeWrapper) {\n this.preventArgs = {\n cancel: false,\n popup: this.popupObj || this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n if (isNullOrUndefined(this.popupObj)) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.dateTimeCloseEventCallback(e, eventArgs);\n });\n }\n else {\n this.dateTimeCloseEventCallback(e, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n DateTimePicker.prototype.dateTimeCloseEventCallback = function (e, eventArgs) {\n this.preventArgs = eventArgs;\n if (!this.preventArgs.cancel) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n else if (this.isTimePopupOpen()) {\n this.closePopup(e);\n removeClass([document.body], OVERFLOW);\n if (Browser.isDevice && this.timeModal) {\n this.timeModal.style.display = 'none';\n this.timeModal.outerHTML = '';\n this.timeModal = null;\n }\n this.setTimeActiveDescendant();\n }\n }\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateTimePicker.prototype.closePopup = function (e) {\n if (this.isTimePopupOpen() && this.popupObject) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: 0\n };\n this.popupObject.hide(new Animation(animModel));\n this.inputWrapper.container.classList.remove(ICONANIMATION);\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n this.inputElement.removeAttribute('aria-owns');\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n }\n };\n DateTimePicker.prototype.preRender = function () {\n this.checkFormat();\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.preRender.call(this);\n removeClass([this.inputElementCopy], [ROOT]);\n };\n DateTimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.setProperties({ min: this.validateValue(date.min) }, true);\n }\n else {\n this.setProperties({ max: this.validateValue(date.max) }, true);\n }\n };\n DateTimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['style', 'name', 'step', 'disabled', 'readonly', 'value', 'min', 'max', 'placeholder', 'type'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === 'true' ||\n this.inputElement.getAttribute(prop) === '' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n DateTimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n if (this.enableMask) {\n modules.push(this.maskedDateModule());\n }\n return modules;\n };\n DateTimePicker.prototype.maskedDateModule = function () {\n var modules = { args: [this], member: 'MaskedDateTime' };\n return modules;\n };\n DateTimePicker.prototype.getTimeActiveElement = function () {\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n return this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.createDateObj = function (val) {\n return val instanceof Date ? val : null;\n };\n DateTimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = this.valueWithMinutes;\n var status_1 = !isNullOrUndefined(value);\n if (this.checkDateValue(dateValue)) {\n var date = status_1 ? value.getDate() : DAY;\n var month = status_1 ? value.getMonth() : MONTH;\n var year = status_1 ? value.getFullYear() : YEAR;\n var hour = status_1 ? value.getHours() : HOUR;\n var minute = status_1 ? value.getMinutes() : MINUTE;\n var second = status_1 ? value.getSeconds() : SECOND;\n var millisecond = status_1 ? value.getMilliseconds() : MILLISECOND;\n if (!this.scrollInvoked) {\n return new Date(year, month, date, hour, minute, second, millisecond);\n }\n else {\n this.scrollInvoked = false;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds(), dateValue.getMilliseconds());\n }\n }\n }\n return null;\n };\n DateTimePicker.prototype.findNextTimeElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var dateTimeVal = null;\n var listCount = this.liCollections.length;\n if (!isNullOrUndefined(this.activeIndex) || !isNullOrUndefined(this.checkDateValue(value))) {\n if (event.action === 'home') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[0])));\n this.activeIndex = 0;\n }\n else if (event.action === 'end') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[this.timeCollections.length - 1])));\n this.activeIndex = this.timeCollections.length - 1;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < listCount; i++) {\n if (+value < this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = listCount - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(isNullOrUndefined(dateTimeVal) ? null : new Date(dateTimeVal));\n }\n };\n DateTimePicker.prototype.setTimeValue = function (date, value) {\n var dateString;\n var time;\n var val = this.validateMinMaxRange(value);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== (!isNullOrUndefined(this.value) ? this.getFormattedValue(this.value) : null)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = new Date(+this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = new Date(+this.valueWithMinutes);\n }\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n return time;\n };\n DateTimePicker.prototype.timeElementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value)) && !this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.setTimeValue(date, value);\n }\n return null;\n };\n DateTimePicker.prototype.timeKeyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0) {\n return;\n }\n var listCount = this.timeCollections.length;\n if (isNullOrUndefined(this.getTimeActiveElement()) || this.getTimeActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n this.activeIndex = 0;\n this.selectedElement = this.liCollections[0];\n this.timeElementValue(new Date(this.timeCollections[0]));\n }\n else {\n this.findNextTimeElement(event);\n }\n }\n }\n else {\n var nextItemValue = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (listCount) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (listCount - 1) : this.activeIndex;\n nextItemValue = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n this.activeIndex = 0;\n nextItemValue = this.timeCollections[0];\n }\n else if (event.action === 'end') {\n this.activeIndex = listCount - 1;\n nextItemValue = this.timeCollections[listCount - 1];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(new Date(nextItemValue));\n }\n this.isNavigate = true;\n this.setTimeHover(this.selectedElement, NAVIGATION);\n this.setTimeActiveDescendant();\n if (this.isTimePopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setTimeScrollPosition();\n }\n };\n DateTimePicker.prototype.timeKeyActionHandle = function (event) {\n if (this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'up':\n case 'down':\n case 'home':\n case 'end':\n this.timeKeyHandler(event);\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs.value = this.value;\n this.addTimeSelection();\n this.previousDateTime = this.value;\n }\n }\n else {\n this.updateValue(event);\n }\n this.hide(event);\n addClass([this.inputWrapper.container], INPUTFOCUS);\n this.isNavigate = false;\n event.stopPropagation();\n break;\n case 'escape':\n this.hide(event);\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n DateTimePicker.prototype.inputKeyAction = function (event) {\n switch (event.action) {\n case 'altDownArrow':\n this.strictModeUpdate();\n this.updateInput();\n this.toggle(event);\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DateTimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DateTimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n\n */\n DateTimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n newProp.value = this.validateValue(newProp.value);\n if (this.enableMask) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(this.getFormattedValue(newProp.value), this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.valueWithMinutes = newProp.value;\n this.setProperties({ value: newProp.value }, true);\n if (this.popupObj) {\n this.popupUpdate();\n }\n this.previousDateTime = new Date(this.inputElement.value);\n this.updateInput();\n this.changeTrigger(null);\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask && this.value) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n this.updateInput();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'cssClass':\n if (!isNullOrUndefined(oldProp.cssClass)) {\n oldProp.cssClass = (oldProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newProp.cssClass)) {\n newProp.cssClass = (newProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newProp.cssClass, [this.inputWrapper.container], oldProp.cssClass);\n if (this.dateTimeWrapper) {\n Input.setCssClass(newProp.cssClass, [this.dateTimeWrapper], oldProp.cssClass);\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.updateInput.call(this);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.dateTimeFormat = this.formatString;\n this.setValue();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkValue(newProp.scrollTo)))) {\n if (this.dateTimeWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.maskedDateValue = '';\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DateTimePicker.prototype.getModuleName = function () {\n return 'datetimepicker';\n };\n DateTimePicker.prototype.restoreValue = function () {\n this.previousDateTime = this.previousDate;\n this.currentDate = this.value ? this.value : new Date();\n this.valueWithMinutes = this.value;\n this.previousDate = this.value;\n this.previousElementValue = this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.getFormattedValue(this.inputValueCopy);\n };\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"timeFormat\", void 0);\n __decorate([\n Property(30)\n ], DateTimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(1000)\n ], DateTimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property({})\n ], DateTimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"values\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], DateTimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], DateTimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], DateTimePicker.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"weekNumber\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], DateTimePicker.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DateTimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"destroyed\", void 0);\n DateTimePicker = __decorate([\n NotifyPropertyChanges\n ], DateTimePicker);\n return DateTimePicker;\n}(DatePicker));\nexport { DateTimePicker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { merge, extend, isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Adaptors are specific data source type aware interfaces that are used by DataManager to communicate with DataSource.\n * This is the base adaptor class that other adaptors can extend.\n *\n * @hidden\n */\nvar Adaptor = /** @class */ (function () {\n /**\n * Constructor for Adaptor class\n *\n * @param {DataOptions} ds?\n * @param ds\n * @hidden\n * @returns aggregates\n */\n function Adaptor(ds) {\n // common options for all the adaptors\n this.options = {\n from: 'table',\n requestType: 'json',\n sortBy: 'sorted',\n select: 'select',\n skip: 'skip',\n group: 'group',\n take: 'take',\n search: 'search',\n count: 'requiresCounts',\n where: 'where',\n aggregates: 'aggregates',\n expand: 'expand'\n };\n /**\n * Specifies the type of adaptor.\n *\n * @default Adaptor\n */\n this.type = Adaptor;\n this.dataSource = ds;\n this.pvt = {};\n }\n /**\n * Returns the data from the query processing.\n *\n * @param {Object} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param ds\n * @param query\n * @param xhr\n * @returns Object\n */\n Adaptor.prototype.processResponse = function (data, ds, query, xhr) {\n return data;\n };\n return Adaptor;\n}());\nexport { Adaptor };\n/**\n * JsonAdaptor is used to process JSON data. It contains methods to process the given JSON data based on the queries.\n *\n * @hidden\n */\nvar JsonAdaptor = /** @class */ (function (_super) {\n __extends(JsonAdaptor, _super);\n function JsonAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the JSON data based on the provided queries.\n *\n * @param {DataManager} dataManager\n * @param {Query} query\n * @returns Object\n */\n JsonAdaptor.prototype.processQuery = function (dataManager, query) {\n var result = dataManager.dataSource.json.slice(0);\n var count = result.length;\n var countFlg = true;\n var ret;\n var key;\n var lazyLoad = {};\n var keyCount = 0;\n var group = [];\n var page;\n for (var i = 0; i < query.lazyLoad.length; i++) {\n keyCount++;\n lazyLoad[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n var agg = {};\n for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if ((key.fn === 'onPage' || key.fn === 'onGroup') && query.lazyLoad.length) {\n if (key.fn === 'onGroup') {\n group.push(key.e);\n }\n if (key.fn === 'onPage') {\n page = key.e;\n }\n continue;\n }\n ret = this[key.fn].call(this, result, key.e, query);\n if (key.fn === 'onAggregates') {\n agg[key.e.field + ' - ' + key.e.type] = ret;\n }\n else {\n result = ret !== undefined ? ret : result;\n }\n if (key.fn === 'onPage' || key.fn === 'onSkip' || key.fn === 'onTake' || key.fn === 'onRange') {\n countFlg = false;\n }\n if (countFlg) {\n count = result.length;\n }\n }\n if (keyCount) {\n var args = {\n query: query, lazyLoad: lazyLoad, result: result, group: group, page: page\n };\n var lazyLoadData = this.lazyLoadGroup(args);\n result = lazyLoadData.result;\n count = lazyLoadData.count;\n }\n if (query.isCountRequired) {\n result = {\n result: result,\n count: count,\n aggregates: agg\n };\n }\n return result;\n };\n /**\n * Perform lazy load grouping in JSON array based on the given query and lazy load details.\n *\n * @param {LazyLoadGroupArgs} args\n */\n JsonAdaptor.prototype.lazyLoadGroup = function (args) {\n var count = 0;\n var agg = this.getAggregate(args.query);\n var result = args.result;\n if (!isNullOrUndefined(args.lazyLoad.onDemandGroupInfo)) {\n var req = args.lazyLoad.onDemandGroupInfo;\n for (var i = req.where.length - 1; i >= 0; i--) {\n result = this.onWhere(result, req.where[i]);\n }\n if (args.group.length !== req.level) {\n var field = args.group[req.level].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n }\n count = result.length;\n var data = result;\n result = result.slice(req.skip);\n result = result.slice(0, req.take);\n if (args.group.length !== req.level) {\n this.formGroupResult(result, data);\n }\n }\n else {\n var field = args.group[0].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n count = result.length;\n var data = result;\n if (args.page) {\n result = this.onPage(result, args.page, args.query);\n }\n this.formGroupResult(result, data);\n }\n return { result: result, count: count };\n };\n JsonAdaptor.prototype.formGroupResult = function (result, data) {\n if (result.length && data.length) {\n var uid = 'GroupGuid';\n var childLevel = 'childLevels';\n var level = 'level';\n var records = 'records';\n result[uid] = data[uid];\n result[childLevel] = data[childLevel];\n result[level] = data[level];\n result[records] = data[records];\n }\n return result;\n };\n /**\n * Separate the aggregate query from the given queries\n *\n * @param {Query} query\n */\n JsonAdaptor.prototype.getAggregate = function (query) {\n var aggQuery = Query.filterQueries(query.queries, 'onAggregates');\n var agg = [];\n if (aggQuery.length) {\n var tmp = void 0;\n for (var i = 0; i < aggQuery.length; i++) {\n tmp = aggQuery[i].e;\n agg.push({ type: tmp.type, field: DataUtil.getValue(tmp.field, query) });\n }\n }\n return agg;\n };\n /**\n * Performs batch update in the JSON array which add, remove and update records.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n JsonAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var i;\n var deletedRecordsLen = changes.deletedRecords.length;\n for (i = 0; i < changes.addedRecords.length; i++) {\n this.insert(dm, changes.addedRecords[i]);\n }\n for (i = 0; i < changes.changedRecords.length; i++) {\n this.update(dm, e.key, changes.changedRecords[i]);\n }\n for (i = 0; i < deletedRecordsLen; i++) {\n this.remove(dm, e.key, changes.deletedRecords[i]);\n }\n return changes;\n };\n /**\n * Performs filter operation with the given data and where query.\n *\n * @param {Object[]} ds\n * @param {{validate:Function}} e\n * @param e.validate\n */\n JsonAdaptor.prototype.onWhere = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.filter(function (obj) {\n if (e) {\n return e.validate(obj);\n }\n });\n };\n /**\n * Returns aggregate function based on the aggregate type.\n *\n * @param {Object[]} ds\n * @param e\n * @param {string} } type\n * @param e.field\n * @param e.type\n */\n JsonAdaptor.prototype.onAggregates = function (ds, e) {\n var fn = DataUtil.aggregates[e.type];\n if (!ds || !fn || ds.length === 0) {\n return null;\n }\n return fn(ds, e.field);\n };\n /**\n * Performs search operation based on the given query.\n *\n * @param {Object[]} ds\n * @param {QueryOptions} e\n */\n JsonAdaptor.prototype.onSearch = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n if (e.fieldNames.length === 0) {\n DataUtil.getFieldList(ds[0], e.fieldNames);\n }\n return ds.filter(function (obj) {\n for (var j = 0; j < e.fieldNames.length; j++) {\n if (e.comparer.call(obj, DataUtil.getObject(e.fieldNames[j], obj), e.searchKey, e.ignoreCase, e.ignoreAccent)) {\n return true;\n }\n }\n return false;\n });\n };\n /**\n * Sort the data with given direction and field.\n *\n * @param {Object[]} ds\n * @param e\n * @param {Object} b\n * @param e.comparer\n * @param e.fieldName\n * @param query\n */\n JsonAdaptor.prototype.onSortBy = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var fnCompare;\n var field = DataUtil.getValue(e.fieldName, query);\n if (!field) {\n return ds.sort(e.comparer);\n }\n if (field instanceof Array) {\n field = field.slice(0);\n for (var i = field.length - 1; i >= 0; i--) {\n if (!field[i]) {\n continue;\n }\n fnCompare = e.comparer;\n if (DataUtil.endsWith(field[i], ' desc')) {\n fnCompare = DataUtil.fnSort('descending');\n field[i] = field[i].replace(' desc', '');\n }\n ds = DataUtil.sort(ds, field[i], fnCompare);\n }\n return ds;\n }\n return DataUtil.sort(ds, field, e.comparer);\n };\n /**\n * Group the data based on the given query.\n *\n * @param {Object[]} ds\n * @param {QueryOptions} e\n * @param {Query} query\n */\n JsonAdaptor.prototype.onGroup = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var agg = this.getAggregate(query);\n return DataUtil.group(ds, DataUtil.getValue(e.fieldName, query), agg, null, null, e.comparer);\n };\n /**\n * Retrieves records based on the given page index and size.\n *\n * @param {Object[]} ds\n * @param e\n * @param {number} } pageIndex\n * @param e.pageSize\n * @param {Query} query\n * @param e.pageIndex\n */\n JsonAdaptor.prototype.onPage = function (ds, e, query) {\n var size = DataUtil.getValue(e.pageSize, query);\n var start = (DataUtil.getValue(e.pageIndex, query) - 1) * size;\n var end = start + size;\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(start, end);\n };\n /**\n * Retrieves records based on the given start and end index from query.\n *\n * @param {Object[]} ds\n * @param e\n * @param {number} } end\n * @param e.start\n * @param e.end\n */\n JsonAdaptor.prototype.onRange = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.start), DataUtil.getValue(e.end));\n };\n /**\n * Picks the given count of records from the top of the datasource.\n *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\n */\n JsonAdaptor.prototype.onTake = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(0, DataUtil.getValue(e.nos));\n };\n /**\n * Skips the given count of records from the data source.\n *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\n */\n JsonAdaptor.prototype.onSkip = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.nos));\n };\n /**\n * Selects specified columns from the data source.\n *\n * @param {Object[]} ds\n * @param {{fieldNames:string}} e\n * @param e.fieldNames\n */\n JsonAdaptor.prototype.onSelect = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return DataUtil.select(ds, DataUtil.getValue(e.fieldNames));\n };\n /**\n * Inserts new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param tableName\n * @param query\n * @param {number} position\n */\n JsonAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n if (isNullOrUndefined(position)) {\n return dm.dataSource.json.push(data);\n }\n else {\n return dm.dataSource.json.splice(position, 0, data);\n }\n };\n /**\n * Remove the data from the dataSource based on the key field value.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @returns null\n */\n JsonAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n if (typeof value === 'object' && !(value instanceof Date)) {\n value = DataUtil.getObject(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (DataUtil.getObject(keyField, ds[i]) === value) {\n break;\n }\n }\n return i !== ds.length ? ds.splice(i, 1) : null;\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @returns null\n */\n JsonAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n var key;\n if (!isNullOrUndefined(keyField)) {\n key = getValue(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (!isNullOrUndefined(keyField) && (getValue(keyField, ds[i])) === key) {\n break;\n }\n }\n return i < ds.length ? merge(ds[i], value) : null;\n };\n return JsonAdaptor;\n}(Adaptor));\nexport { JsonAdaptor };\n/**\n * URL Adaptor of DataManager can be used when you are required to use remote service to retrieve data.\n * It interacts with server-side for all DataManager Queries and CRUD operations.\n *\n * @hidden\n */\nvar UrlAdaptor = /** @class */ (function (_super) {\n __extends(UrlAdaptor, _super);\n function UrlAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the query to generate request body.\n *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param hierarchyFilters\n * @returns p\n */\n // tslint:disable-next-line:max-func-body-length\n UrlAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var params = query.params;\n var url = dm.dataSource.url;\n var temp;\n var skip;\n var take = null;\n var options = this.options;\n var request = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n // calc Paging & Range\n if ('onPage' in singles) {\n temp = singles.onPage;\n skip = DataUtil.getValue(temp.pageIndex, query);\n take = DataUtil.getValue(temp.pageSize, query);\n skip = (skip - 1) * take;\n }\n else if ('onRange' in singles) {\n temp = singles.onRange;\n skip = temp.start;\n take = temp.end - temp.start;\n }\n // Sorting\n for (var i = 0; i < queries.sorts.length; i++) {\n temp = DataUtil.getValue(queries.sorts[i].e.fieldName, query);\n request.sorts.push(DataUtil.callAdaptorFunction(this, 'onEachSort', { name: temp, direction: queries.sorts[i].e.direction }, query));\n }\n // hierarchy\n if (hierarchyFilters) {\n temp = this.getFiltersFrom(hierarchyFilters, query);\n if (temp) {\n request.filters.push(DataUtil.callAdaptorFunction(this, 'onEachWhere', temp.toJson(), query));\n }\n }\n // Filters\n for (var i = 0; i < queries.filters.length; i++) {\n var res = DataUtil.callAdaptorFunction(this, 'onEachWhere', queries.filters[i].e.toJson(), query);\n if ((this.getModuleName &&\n this.getModuleName() === 'ODataV4Adaptor') &&\n !isNullOrUndefined(queries.filters[i].e.key) && queries.filters.length > 1) {\n res = '(' + res + ')';\n }\n request.filters.push(res);\n var keys_3 = typeof request.filters[i] === 'object' ? Object.keys(request.filters[i]) : [];\n for (var _i = 0, keys_1 = keys_3; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (DataUtil.isNull((request)[prop])) {\n delete request[prop];\n }\n }\n }\n // Searches\n for (var i = 0; i < queries.searches.length; i++) {\n temp = queries.searches[i].e;\n request.searches.push(DataUtil.callAdaptorFunction(this, 'onEachSearch', {\n fields: temp.fieldNames,\n operator: temp.operator,\n key: temp.searchKey,\n ignoreCase: temp.ignoreCase\n }, query));\n }\n // Grouping\n for (var i = 0; i < queries.groups.length; i++) {\n request.groups.push(DataUtil.getValue(queries.groups[i].e.fieldName, query));\n }\n // aggregates\n for (var i = 0; i < queries.aggregates.length; i++) {\n temp = queries.aggregates[i].e;\n request.aggregates.push({ type: temp.type, field: DataUtil.getValue(temp.field, query) });\n }\n var req = {};\n this.getRequestQuery(options, query, singles, request, req);\n // Params\n DataUtil.callAdaptorFunction(this, 'addParams', { dm: dm, query: query, params: params, reqParams: req });\n if (query.lazyLoad.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n req[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n }\n // cleanup\n var keys = Object.keys(req);\n for (var _a = 0, keys_2 = keys; _a < keys_2.length; _a++) {\n var prop = keys_2[_a];\n if (DataUtil.isNull(req[prop]) || req[prop] === '' || req[prop].length === 0) {\n delete req[prop];\n }\n }\n if (!(options.skip in req && options.take in req) && take !== null) {\n req[options.skip] = DataUtil.callAdaptorFunction(this, 'onSkip', skip, query);\n req[options.take] = DataUtil.callAdaptorFunction(this, 'onTake', take, query);\n }\n var p = this.pvt;\n this.pvt = {};\n if (this.options.requestType === 'json') {\n return {\n data: JSON.stringify(req, DataUtil.parse.jsonDateReplacer),\n url: url,\n pvtData: p,\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n }\n temp = this.convertToQueryString(req, query, dm);\n temp = (dm.dataSource.url.indexOf('?') !== -1 ? '&' : '/') + temp;\n return {\n type: 'GET', url: temp.length ? url.replace(/\\/*$/, temp) : url, pvtData: p\n };\n };\n UrlAdaptor.prototype.getRequestQuery = function (options, query, singles, request, request1) {\n var param = 'param';\n var req = request1;\n req[options.from] = query.fromTable;\n if (options.apply && query.distincts.length) {\n req[options.apply] = 'onDistinct' in this ? DataUtil.callAdaptorFunction(this, 'onDistinct', query.distincts) : '';\n }\n if (!query.distincts.length && options.expand) {\n req[options.expand] = 'onExpand' in this && 'onSelect' in singles ?\n DataUtil.callAdaptorFunction(this, 'onExpand', { selects: DataUtil.getValue(singles.onSelect.fieldNames, query), expands: query.expands }, query) : query.expands;\n }\n req[options.select] = 'onSelect' in singles && !query.distincts.length ?\n DataUtil.callAdaptorFunction(this, 'onSelect', DataUtil.getValue(singles.onSelect.fieldNames, query), query) : '';\n req[options.count] = query.isCountRequired ? DataUtil.callAdaptorFunction(this, 'onCount', query.isCountRequired, query) : '';\n req[options.search] = request.searches.length ? DataUtil.callAdaptorFunction(this, 'onSearch', request.searches, query) : '';\n req[options.skip] = 'onSkip' in singles ?\n DataUtil.callAdaptorFunction(this, 'onSkip', DataUtil.getValue(singles.onSkip.nos, query), query) : '';\n req[options.take] = 'onTake' in singles ?\n DataUtil.callAdaptorFunction(this, 'onTake', DataUtil.getValue(singles.onTake.nos, query), query) : '';\n req[options.where] = request.filters.length || request.searches.length ?\n DataUtil.callAdaptorFunction(this, 'onWhere', request.filters, query) : '';\n req[options.sortBy] = request.sorts.length ? DataUtil.callAdaptorFunction(this, 'onSortBy', request.sorts, query) : '';\n req[options.group] = request.groups.length ? DataUtil.callAdaptorFunction(this, 'onGroup', request.groups, query) : '';\n req[options.aggregates] = request.aggregates.length ?\n DataUtil.callAdaptorFunction(this, 'onAggregates', request.aggregates, query) : '';\n req[param] = [];\n };\n /**\n * Convert the object from processQuery to string which can be added query string.\n *\n * @param {Object} req\n * @param request\n * @param {Query} query\n * @param {DataManager} dm\n */\n UrlAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n return '';\n // this needs to be overridden\n };\n /**\n * Return the data from the data manager processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Object} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n */\n UrlAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('application/json') !== -1) {\n var handleTimeZone = DataUtil.timeZoneHandling;\n if (ds && !ds.timeZoneHandling) {\n DataUtil.timeZoneHandling = false;\n }\n data = DataUtil.parse.parseJson(data);\n DataUtil.timeZoneHandling = handleTimeZone;\n }\n var requests = request;\n var pvt = requests.pvtData || {};\n var groupDs = data ? data.groupDs : [];\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n var d = JSON.parse(requests.data);\n if (d && d.action === 'batch' && data && data.addedRecords) {\n changes.addedRecords = data.addedRecords;\n return changes;\n }\n if (data && data.d) {\n data = data.d;\n }\n var args = {};\n if (data && 'count' in data) {\n args.count = data.count;\n }\n args.result = data && data.result ? data.result : data;\n var isExpand = false;\n if (Array.isArray(data.result) && data.result.length) {\n var key = 'key';\n var val = 'value';\n var level = 'level';\n if (!isNullOrUndefined(data.result[0][key])) {\n args.result = this.formRemoteGroupedData(args.result, 1, pvt.groups.length - 1);\n }\n if (query && query.lazyLoad.length && pvt.groups.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n if (query.lazyLoad[i][key] === 'onDemandGroupInfo') {\n var value = query.lazyLoad[i][val][level];\n if (pvt.groups.length === value) {\n isExpand = true;\n }\n }\n }\n }\n }\n if (!isExpand) {\n this.getAggregateResult(pvt, data, args, groupDs, query);\n }\n return DataUtil.isNull(args.count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n UrlAdaptor.prototype.formRemoteGroupedData = function (data, level, childLevel) {\n for (var i = 0; i < data.length; i++) {\n if (data[i].items.length && Object.keys(data[i].items[0]).indexOf('key') > -1) {\n this.formRemoteGroupedData(data[i].items, level + 1, childLevel - 1);\n }\n }\n var uid = 'GroupGuid';\n var childLvl = 'childLevels';\n var lvl = 'level';\n var records = 'records';\n data[uid] = consts[uid];\n data[lvl] = level;\n data[childLvl] = childLevel;\n data[records] = data[0].items.length ? this.getGroupedRecords(data, !isNullOrUndefined(data[0].items[records])) : [];\n return data;\n };\n UrlAdaptor.prototype.getGroupedRecords = function (data, hasRecords) {\n var childGroupedRecords = [];\n var records = 'records';\n for (var i = 0; i < data.length; i++) {\n if (!hasRecords) {\n for (var j = 0; j < data[i].items.length; j++) {\n childGroupedRecords.push(data[i].items[j]);\n }\n }\n else {\n childGroupedRecords = childGroupedRecords.concat(data[i].items[records]);\n }\n }\n return childGroupedRecords;\n };\n /**\n * Add the group query to the adaptor`s option.\n *\n * @param {Object[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return e;\n };\n /**\n * Add the aggregate query to the adaptor`s option.\n *\n * @param {Aggregates[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param query\n * @param original\n */\n UrlAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var url;\n var key;\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.removeUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e[url],\n key: e[key]\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @returns void\n */\n UrlAdaptor.prototype.beforeSend = function (dm, request) {\n // need to extend this method\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.insert = function (dm, data, tableName, query) {\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number|string} value\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.remove = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: value,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.update = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: value,\n action: 'update',\n keyColumn: keyField,\n key: DataUtil.getObject(keyField, value),\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * To generate the predicate based on the filtered query.\n *\n * @param {Object[]|string[]|number[]} data\n * @param {Query} query\n * @hidden\n */\n UrlAdaptor.prototype.getFiltersFrom = function (data, query) {\n var key = query.fKey;\n var value;\n var prop = key;\n var pKey = query.key;\n var predicats = [];\n if (typeof data[0] !== 'object') {\n prop = null;\n }\n for (var i = 0; i < data.length; i++) {\n if (typeof data[0] === 'object') {\n value = DataUtil.getObject(pKey || prop, data[i]);\n }\n else {\n value = data[i];\n }\n predicats.push(new Predicate(key, 'equal', value));\n }\n return Predicate.or(predicats);\n };\n UrlAdaptor.prototype.getAggregateResult = function (pvt, data, args, groupDs, query) {\n var pData = data;\n if (data && data.result) {\n pData = data.result;\n }\n if (pvt && pvt.aggregates && pvt.aggregates.length) {\n var agg = pvt.aggregates;\n var fn = void 0;\n var aggregateData = pData;\n var res = {};\n if (data.aggregate) {\n aggregateData = data.aggregate;\n }\n for (var i = 0; i < agg.length; i++) {\n fn = DataUtil.aggregates[agg[i].type];\n if (fn) {\n res[agg[i].field + ' - ' + agg[i].type] = fn(aggregateData, agg[i].field);\n }\n }\n args.aggregates = res;\n }\n var key = 'key';\n var isServerGrouping = Array.isArray(data.result) && data.result.length && !isNullOrUndefined(data.result[0][key]);\n if (pvt && pvt.groups && pvt.groups.length && !isServerGrouping) {\n var groups = pvt.groups;\n for (var i = 0; i < groups.length; i++) {\n var level = null;\n if (!isNullOrUndefined(groupDs)) {\n groupDs = DataUtil.group(groupDs, groups[i]);\n }\n var groupQuery = Query.filterQueries(query.queries, 'onGroup')[i].e;\n pData = DataUtil.group(pData, groups[i], pvt.aggregates, level, groupDs, groupQuery.comparer);\n }\n args.result = pData;\n }\n return args;\n };\n UrlAdaptor.prototype.getQueryRequest = function (query) {\n var req = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n req.sorts = Query.filterQueries(query.queries, 'onSortBy');\n req.groups = Query.filterQueries(query.queries, 'onGroup');\n req.filters = Query.filterQueries(query.queries, 'onWhere');\n req.searches = Query.filterQueries(query.queries, 'onSearch');\n req.aggregates = Query.filterQueries(query.queries, 'onAggregates');\n return req;\n };\n UrlAdaptor.prototype.addParams = function (options) {\n var req = options.reqParams;\n if (options.params.length) {\n req.params = {};\n }\n for (var _i = 0, _a = options.params; _i < _a.length; _i++) {\n var tmp = _a[_i];\n if (req[tmp.key]) {\n throw new Error('Query() - addParams: Custom Param is conflicting other request arguments');\n }\n req[tmp.key] = tmp.value;\n if (tmp.fn) {\n req[tmp.key] = tmp.fn.call(options.query, tmp.key, options.query, options.dm);\n }\n req.params[tmp.key] = req[tmp.key];\n }\n };\n return UrlAdaptor;\n}(Adaptor));\nexport { UrlAdaptor };\n/**\n * OData Adaptor that is extended from URL Adaptor, is used for consuming data through OData Service.\n *\n * @hidden\n */\nvar ODataAdaptor = /** @class */ (function (_super) {\n __extends(ODataAdaptor, _super);\n function ODataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json;odata=light;q=1,application/json;odata=verbose;q=0.5',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$inlinecount',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PUT'\n });\n extend(_this.options, props || {});\n return _this;\n }\n ODataAdaptor.prototype.getModuleName = function () {\n return 'ODataAdaptor';\n };\n /**\n * Generate request string based on the filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var operator;\n var guid;\n var val = predicate.value;\n var type = typeof val;\n var field = predicate.field ? ODataAdaptor.getField(predicate.field) : null;\n if (val instanceof Date) {\n val = 'datetime\\'' + DataUtil.parse.replacer(val) + '\\'';\n }\n if (type === 'string') {\n val = val.replace(/'/g, '\\'\\'');\n if (predicate.ignoreCase) {\n val = val.toLowerCase();\n }\n if (predicate.operator !== 'like') {\n val = encodeURIComponent(val);\n }\n if (predicate.operator !== 'wildcard' && predicate.operator !== 'like') {\n val = '\\'' + val + '\\'';\n }\n if (requiresCast) {\n field = 'cast(' + field + ', \\'Edm.String\\')';\n }\n if (DataUtil.parse.isGuid(val)) {\n guid = 'guid';\n }\n if (predicate.ignoreCase) {\n if (!guid) {\n field = 'tolower(' + field + ')';\n }\n val = val.toLowerCase();\n }\n }\n if (predicate.operator === 'isempty' || predicate.operator === 'isnull' || predicate.operator === 'isnotempty' ||\n predicate.operator === 'isnotnull') {\n operator = predicate.operator.indexOf('isnot') !== -1 ? DataUtil.odBiOperator['notequal'] : DataUtil.odBiOperator['equal'];\n val = predicate.operator === 'isnull' || predicate.operator === 'isnotnull' ? null : '\\'\\'';\n }\n else {\n operator = DataUtil.odBiOperator[predicate.operator];\n }\n if (operator) {\n returnValue += field;\n returnValue += operator;\n if (guid) {\n returnValue += guid;\n }\n return returnValue + val;\n }\n if (!isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor') {\n operator = DataUtil.odv4UniOperator[predicate.operator];\n }\n else {\n operator = DataUtil.odUniOperator[predicate.operator];\n }\n if (operator === 'like') {\n val = val;\n if (val.indexOf('%') !== -1) {\n if (val.charAt(0) === '%' && val.lastIndexOf('%') < 2) {\n val = val.substring(1, val.length);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n }\n else if (val.charAt(val.length - 1) === '%' && val.indexOf('%') > val.length - 3) {\n val = val.substring(0, val.length - 1);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n }\n else if (val.lastIndexOf('%') !== val.indexOf('%') && val.lastIndexOf('%') > val.indexOf('%') + 1) {\n val = val.substring(val.indexOf('%') + 1, val.lastIndexOf('%'));\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n }\n val = encodeURIComponent(val);\n val = '\\'' + val + '\\'';\n }\n else if (operator === 'wildcard') {\n val = val;\n if (val.indexOf('*') !== -1) {\n var splittedStringValue = val.split('*');\n var splittedValue = void 0;\n var count = 0;\n if (val.indexOf('*') !== 0 && splittedStringValue[0].indexOf('%3f') === -1 &&\n splittedStringValue[0].indexOf('?') === -1) {\n splittedValue = splittedStringValue[0];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (val.lastIndexOf('*') !== val.length - 1 && splittedStringValue[splittedStringValue.length - 1].indexOf('%3f') === -1 &&\n splittedStringValue[splittedStringValue.length - 1].indexOf('?') === -1) {\n splittedValue = splittedStringValue[splittedStringValue.length - 1];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n if (count > 0) {\n returnValue += ' and ';\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (splittedStringValue.length > 2) {\n for (var i = 1; i < splittedStringValue.length - 1; i++) {\n if (splittedStringValue[i].indexOf('%3f') === -1 && splittedStringValue[i].indexOf('?') === -1) {\n splittedValue = splittedStringValue[i];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (count > 0) {\n returnValue += ' and ';\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = splittedValue;\n splittedValue = field;\n field = temp;\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n }\n }\n if (count === 0) {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n else {\n operator = 'wildcard';\n }\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = val;\n val = field;\n field = temp;\n }\n if (operator !== 'wildcard') {\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += val + ')';\n }\n return returnValue;\n };\n ODataAdaptor.prototype.addParams = function (options) {\n _super.prototype.addParams.call(this, options);\n delete options.reqParams.params;\n };\n /**\n * Generate request string based on the multiple filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onComplexPredicate = function (predicate, query, requiresCast) {\n var res = [];\n for (var i = 0; i < predicate.predicates.length; i++) {\n res.push('(' + this.onEachWhere(predicate.predicates[i], query, requiresCast) + ')');\n }\n return res.join(' ' + predicate.condition + ' ');\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n *\n * @param {Predicate} filter\n * @param {boolean} requiresCast?\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onEachWhere = function (filter, query, requiresCast) {\n return filter.isComplex ? this.onComplexPredicate(filter, query, requiresCast) : this.onPredicate(filter, query, requiresCast);\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n *\n * @param {string[]} filters\n */\n ODataAdaptor.prototype.onWhere = function (filters) {\n if (this.pvt.search) {\n filters.push(this.onEachWhere(this.pvt.search, null, true));\n }\n return filters.join(' and ');\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.ignoreCase\n */\n ODataAdaptor.prototype.onEachSearch = function (e) {\n if (e.fields && e.fields.length === 0) {\n DataUtil.throwError('Query() - Search : oData search requires list of field names to search');\n }\n var filter = this.pvt.search || [];\n for (var i = 0; i < e.fields.length; i++) {\n filter.push(new Predicate(e.fields[i], e.operator, e.key, e.ignoreCase));\n }\n this.pvt.search = filter;\n };\n /**\n * Generate query string based on the search criteria from query.\n *\n * @param {Object} e\n */\n ODataAdaptor.prototype.onSearch = function (e) {\n this.pvt.search = Predicate.or(this.pvt.search);\n return '';\n };\n /**\n * Generate query string based on multiple sort criteria from query.\n *\n * @param {QueryOptions} e\n */\n ODataAdaptor.prototype.onEachSort = function (e) {\n var res = [];\n if (e.name instanceof Array) {\n for (var i = 0; i < e.name.length; i++) {\n res.push(ODataAdaptor.getField(e.name[i]) + (e.direction === 'descending' ? ' desc' : ''));\n }\n }\n else {\n res.push(ODataAdaptor.getField(e.name) + (e.direction === 'descending' ? ' desc' : ''));\n }\n return res.join(',');\n };\n /**\n * Returns sort query string.\n *\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSortBy = function (e) {\n return e.reverse().join(',');\n };\n /**\n * Adds the group query to the adaptor option.\n *\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return [];\n };\n /**\n * Returns the select query string.\n *\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSelect = function (e) {\n for (var i = 0; i < e.length; i++) {\n e[i] = ODataAdaptor.getField(e[i]);\n }\n return e.join(',');\n };\n /**\n * Add the aggregate query to the adaptor option.\n *\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n return '';\n };\n /**\n * Returns the query string which requests total count from the data source.\n *\n * @param {boolean} e\n * @returns string\n */\n ODataAdaptor.prototype.onCount = function (e) {\n return e === true ? 'allpages' : '';\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n * @param settings\n */\n ODataAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (DataUtil.endsWith(settings.url, this.options.batch) && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.options.multipartAccept);\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.overrideMimeType('text/plain; charset=x-user-defined');\n }\n else {\n request.setRequestHeader('Accept', this.options.accept);\n }\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.setRequestHeader('MaxDataServiceVersion', '2.0');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaCheck = 'odata.metadata';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaCheck]) {\n var dataUrls = data[metaCheck].split('/$metadata#');\n this.rootUrl = dataUrls[0];\n this.resourceTableName = dataUrls[1];\n }\n var pvtData = 'pvtData';\n if (!isNullOrUndefined(data.d)) {\n var dataCopy = ((query && query.isCountRequired) ? data.d.results : data.d);\n var metaData = '__metadata';\n if (!isNullOrUndefined(dataCopy)) {\n for (var i = 0; i < dataCopy.length; i++) {\n if (!isNullOrUndefined(dataCopy[i][metaData])) {\n delete dataCopy[i][metaData];\n }\n }\n }\n }\n var pvt = request && request[pvtData];\n var emptyAndBatch = this.processBatchResponse(data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var count = null;\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n var oDataCount = '__count';\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n if (data.d) {\n data = data.d;\n }\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n }\n if (version === 3 && data.value) {\n data = data.value;\n }\n if (data.d) {\n data = data.d;\n }\n if (version < 3 && data.results) {\n data = data.results;\n }\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n /**\n * Converts the request object to query string.\n *\n * @param {Object} req\n * @param request\n * @param {Query} query\n * @param {DataManager} dm\n * @returns tableName\n */\n ODataAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n var res = [];\n var table = 'table';\n var tableName = request[table] || '';\n var format = '$format';\n delete request[table];\n if (dm.dataSource.requiresFormat) {\n request[format] = 'json';\n }\n var keys = Object.keys(request);\n for (var _i = 0, keys_4 = keys; _i < keys_4.length; _i++) {\n var prop = keys_4[_i];\n res.push(prop + '=' + request[prop]);\n }\n res = res.join('&');\n if (dm.dataSource.url && dm.dataSource.url.indexOf('?') !== -1 && !tableName) {\n return res;\n }\n return res.length ? tableName + '?' + res : tableName || '';\n };\n ODataAdaptor.prototype.localTimeReplacer = function (key, convertObj) {\n for (var _i = 0, _a = !isNullOrUndefined(convertObj) ? Object.keys(convertObj) : []; _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((convertObj[prop] instanceof Date)) {\n convertObj[prop] = DataUtil.dateParse.toLocalTime(convertObj[prop]);\n }\n }\n return convertObj;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n ODataAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n url: (dm.dataSource.insertUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : ''),\n data: JSON.stringify(data, this.options.localTime ? this.localTimeReplacer : null)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param tableName\n */\n ODataAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var url;\n if (typeof value === 'string' && !DataUtil.parse.isGuid(value)) {\n url = \"('\" + value + \"')\";\n }\n else {\n url = \"(\" + value + \")\";\n }\n return {\n type: 'DELETE',\n url: (dm.dataSource.removeUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url\n };\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @param query\n * @param original\n * @returns this\n */\n ODataAdaptor.prototype.update = function (dm, keyField, value, tableName, query, original) {\n if (this.options.updateType === 'PATCH' && !isNullOrUndefined(original)) {\n value = this.compareAndRemove(value, original, keyField);\n }\n var url;\n if (typeof value[keyField] === 'string' && !DataUtil.parse.isGuid(value[keyField])) {\n url = \"('\" + value[keyField] + \"')\";\n }\n else {\n url = \"(\" + value[keyField] + \")\";\n }\n return {\n type: this.options.updateType,\n url: (dm.dataSource.updateUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url,\n data: JSON.stringify(value, this.options.localTime ? this.localTimeReplacer : null),\n accept: this.options.accept\n };\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\n * @returns {Object}\n */\n ODataAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = this.rootUrl ? this.rootUrl + '/' + this.options.batch :\n dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var args = {\n url: e.url,\n key: e.key,\n cid: 1,\n cSet: DataUtil.getGuid(this.options.changeSet)\n };\n var req = '--' + initialGuid + '\\n';\n req += 'Content-Type: multipart/mixed; boundary=' + args.cSet.replace('--', '') + '\\n';\n this.pvt.changeSet = 0;\n req += this.generateInsertRequest(changes.addedRecords, args, dm);\n req += this.generateUpdateRequest(changes.changedRecords, args, dm, original ? original.changedRecords : []);\n req += this.generateDeleteRequest(changes.deletedRecords, args, dm);\n req += args.cSet + '--\\n';\n req += '--' + initialGuid + '--';\n return {\n type: 'POST',\n url: url,\n dataType: 'json',\n contentType: 'multipart/mixed; charset=UTF-8;boundary=' + initialGuid,\n data: req\n };\n };\n /**\n * Generate the string content from the removed records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @returns this\n */\n ODataAdaptor.prototype.generateDeleteRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '(' + url + ')';\n }\n else if (url instanceof Date) {\n var dateTime = data[i][key];\n return '(' + dateTime.toJSON() + ')';\n }\n else {\n return \"('\" + url + \"')\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req + '\\n';\n };\n /**\n * Generate the string content from the inserted records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n */\n ODataAdaptor.prototype.generateInsertRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n /**\n * Generate the string content from the updated records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @param org\n */\n ODataAdaptor.prototype.generateUpdateRequest = function (arr, e, dm, org) {\n var _this = this;\n if (!arr) {\n return '';\n }\n var req = '';\n arr.forEach(function (change) { return change = _this.compareAndRemove(change, org.filter(function (o) { return DataUtil.getObject(e.key, o) === DataUtil.getObject(e.key, change); })[0], e.key); });\n var stat = {\n 'method': this.options.updateType + ' ',\n 'url': function (data, i, key) {\n if (typeof data[i][key] === 'number' || DataUtil.parse.isGuid(data[i][key])) {\n return '(' + data[i][key] + ')';\n }\n else if (data[i][key] instanceof Date) {\n var date = data[i][key];\n return '(' + date.toJSON() + ')';\n }\n else {\n return \"('\" + data[i][key] + \"')\";\n }\n },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n ODataAdaptor.getField = function (prop) {\n return prop.replace(/\\./g, '/');\n };\n ODataAdaptor.prototype.generateBodyContent = function (arr, e, stat, dm) {\n var req = '';\n for (var i = 0; i < arr.length; i++) {\n req += '\\n' + e.cSet + '\\n';\n req += this.options.changeSetContent + '\\n\\n';\n req += stat.method;\n if (stat.method === 'POST ') {\n req += (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'PUT ' || stat.method === 'PATCH ') {\n req += (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'DELETE ') {\n req += (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n req += 'Accept: ' + this.options.accept + '\\n';\n req += 'Content-Id: ' + this.pvt.changeSet++ + '\\n';\n req += this.options.batchChangeSetContentType + '\\n';\n if (!isNullOrUndefined(arr[i]['@odata.etag'])) {\n req += 'If-Match: ' + arr[i]['@odata.etag'] + '\\n\\n';\n delete arr[i]['@odata.etag'];\n }\n else {\n req += '\\n';\n }\n req += stat.data(arr, i);\n }\n return req;\n };\n ODataAdaptor.prototype.processBatchResponse = function (data, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') && xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n if (request && this.options.batch && DataUtil.endsWith(request.url, this.options.batch) && request.type.toLowerCase() === 'post') {\n var guid = xhr.getResponseHeader('Content-Type');\n var cIdx = void 0;\n var jsonObj = void 0;\n var d = data + '';\n guid = guid.substring(guid.indexOf('=batchresponse') + 1);\n d = d.split(guid);\n if (d.length < 2) {\n return {};\n }\n d = d[1];\n var exVal = /(?:\\bContent-Type.+boundary=)(changesetresponse.+)/i.exec(d);\n if (exVal) {\n d.replace(exVal[0], '');\n }\n var changeGuid = exVal ? exVal[1] : '';\n d = d.split(changeGuid);\n for (var i = d.length; i > -1; i--) {\n if (!/\\bContent-ID:/i.test(d[i]) || !/\\bHTTP.+201/.test(d[i])) {\n continue;\n }\n cIdx = parseInt(/\\bContent-ID: (\\d+)/i.exec(d[i])[1], 10);\n if (changes.addedRecords[cIdx]) {\n jsonObj = DataUtil.parse.parseJson(/^\\{.+\\}/m.exec(d[i])[0]);\n extend({}, changes.addedRecords[cIdx], this.processResponse(jsonObj));\n }\n }\n return changes;\n }\n return null;\n };\n ODataAdaptor.prototype.compareAndRemove = function (data, original, key) {\n var _this = this;\n if (isNullOrUndefined(original)) {\n return data;\n }\n Object.keys(data).forEach(function (prop) {\n if (prop !== key && prop !== '@odata.etag') {\n if (DataUtil.isPlainObject(data[prop])) {\n _this.compareAndRemove(data[prop], original[prop]);\n var final = Object.keys(data[prop]).filter(function (data) { return data !== '@odata.etag'; });\n if (final.length === 0) {\n delete data[prop];\n }\n }\n else if (data[prop] === original[prop]) {\n delete data[prop];\n }\n else if (data[prop] && original[prop] && data[prop].valueOf() === original[prop].valueOf()) {\n delete data[prop];\n }\n }\n });\n return data;\n };\n return ODataAdaptor;\n}(UrlAdaptor));\nexport { ODataAdaptor };\n/**\n * The OData v4 is an improved version of OData protocols.\n * The DataManager uses the ODataV4Adaptor to consume OData v4 services.\n *\n * @hidden\n */\nvar ODataV4Adaptor = /** @class */ (function (_super) {\n __extends(ODataV4Adaptor, _super);\n function ODataV4Adaptor(props) {\n var _this = _super.call(this, props) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json, text/javascript, */*; q=0.01',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$count',\n search: '$search',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PATCH',\n localTime: false,\n apply: '$apply'\n });\n extend(_this.options, props || {});\n return _this;\n }\n /**\n * @hidden\n */\n ODataV4Adaptor.prototype.getModuleName = function () {\n return 'ODataV4Adaptor';\n };\n /**\n * Returns the query string which requests total count from the data source.\n *\n * @param {boolean} e\n * @returns string\n */\n ODataV4Adaptor.prototype.onCount = function (e) {\n return e === true ? 'true' : '';\n };\n /**\n * Generate request string based on the filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataV4Adaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var val = predicate.value;\n var isDate = val instanceof Date;\n if (query instanceof Query) {\n var queries = this.getQueryRequest(query);\n for (var i = 0; i < queries.filters.length; i++) {\n if (queries.filters[i].e.key === predicate.value) {\n requiresCast = true;\n }\n }\n }\n returnValue = _super.prototype.onPredicate.call(this, predicate, query, requiresCast);\n if (isDate) {\n returnValue = returnValue.replace(/datetime'(.*)'$/, '$1');\n }\n if (DataUtil.parse.isGuid(val)) {\n returnValue = returnValue.replace('guid', '').replace(/'/g, '');\n }\n return returnValue;\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.ignoreCase\n */\n ODataV4Adaptor.prototype.onEachSearch = function (e) {\n var search = this.pvt.searches || [];\n search.push(e.key);\n this.pvt.searches = search;\n };\n /**\n * Generate query string based on the search criteria from query.\n *\n * @param {Object} e\n */\n ODataV4Adaptor.prototype.onSearch = function (e) {\n return this.pvt.searches.join(' OR ');\n };\n /**\n * Returns the expand query string.\n *\n * @param {string} e\n * @param e.selects\n * @param e.expands\n */\n ODataV4Adaptor.prototype.onExpand = function (e) {\n var _this = this;\n var selected = {};\n var expanded = {};\n var expands = e.expands.slice();\n var exArr = [];\n var selects = e.selects.filter(function (item) { return item.indexOf('.') > -1; });\n selects.forEach(function (select) {\n var splits = select.split('.');\n if (!(splits[0] in selected)) {\n selected[splits[0]] = [];\n }\n if (splits.length === 2) {\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1) {\n if (selected[splits[0]][0].indexOf('$expand') !== -1 && selected[splits[0]][0].indexOf(';$select=') === -1) {\n selected[splits[0]][0] = selected[splits[0]][0] + ';' + '$select=' + splits[1];\n }\n else {\n selected[splits[0]][0] = selected[splits[0]][0] + ',' + splits[1];\n }\n }\n else {\n selected[splits[0]].push('$select=' + splits[1]);\n }\n }\n else {\n var sel = '$select=' + splits[splits.length - 1];\n var exp = '';\n var close_1 = '';\n for (var i = 1; i < splits.length - 1; i++) {\n exp = exp + '$expand=' + splits[i] + '(';\n close_1 = close_1 + ')';\n }\n var combineVal = exp + sel + close_1;\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1 &&\n _this.expandQueryIndex(selected[splits[0]], true)) {\n var idx = _this.expandQueryIndex(selected[splits[0]]);\n selected[splits[0]][idx] = selected[splits[0]][idx] + combineVal.replace('$expand=', ',');\n }\n else {\n selected[splits[0]].push(combineVal);\n }\n }\n });\n //Auto expand from select query\n Object.keys(selected).forEach(function (expand) {\n if ((expands.indexOf(expand) === -1)) {\n expands.push(expand);\n }\n });\n expands.forEach(function (expand) {\n expanded[expand] = expand in selected ? expand + \"(\" + selected[expand].join(';') + \")\" : expand;\n });\n Object.keys(expanded).forEach(function (ex) { return exArr.push(expanded[ex]); });\n return exArr.join(',');\n };\n ODataV4Adaptor.prototype.expandQueryIndex = function (query, isExpand) {\n for (var i = 0; i < query.length; i++) {\n if (query[i].indexOf('$expand') !== -1) {\n return isExpand ? true : i;\n }\n }\n return isExpand ? false : 0;\n };\n /**\n * Returns the groupby query string.\n *\n * @param {string} e\n * @param distinctFields\n */\n ODataV4Adaptor.prototype.onDistinct = function (distinctFields) {\n var fields = distinctFields.map(function (field) { return ODataAdaptor.getField(field); }).join(',');\n return \"groupby((\" + fields + \"))\";\n };\n /**\n * Returns the select query string.\n *\n * @param {string[]} e\n */\n ODataV4Adaptor.prototype.onSelect = function (e) {\n return _super.prototype.onSelect.call(this, e.filter(function (item) { return item.indexOf('.') === -1; }));\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n ODataV4Adaptor.prototype.beforeSend = function (dm, request, settings) {\n if (settings.type === 'POST' || settings.type === 'PUT' || settings.type === 'PATCH') {\n request.setRequestHeader('Prefer', 'return=representation');\n }\n request.setRequestHeader('Accept', this.options.accept);\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataV4Adaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaName = '@odata.context';\n var metaV4Name = '@context';\n if ((request && request.type === 'GET') && !this.rootUrl && (data[metaName] || data[metaV4Name])) {\n var dataUrl = data[metaName] ? data[metaName].split('/$metadata#') : data[metaV4Name].split('/$metadata#');\n this.rootUrl = dataUrl[0];\n this.resourceTableName = dataUrl[1];\n }\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var emptyAndBatch = _super.prototype.processBatchResponse.call(this, data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var count = null;\n var dataCount = '@odata.count';\n var dataV4Count = '@count';\n if (query && query.isCountRequired) {\n if (dataCount in data) {\n count = data[dataCount];\n }\n else if (dataV4Count in data) {\n count = data[dataV4Count];\n }\n }\n data = !isNullOrUndefined(data.value) ? data.value : data;\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: count, aggregates: args.aggregates };\n };\n return ODataV4Adaptor;\n}(ODataAdaptor));\nexport { ODataV4Adaptor };\n/**\n * The Web API is a programmatic interface to define the request and response messages system that is mostly exposed in JSON or XML.\n * The DataManager uses the WebApiAdaptor to consume Web API.\n * Since this adaptor is targeted to interact with Web API created using OData endpoint, it is extended from ODataAdaptor\n *\n * @hidden\n */\nvar WebApiAdaptor = /** @class */ (function (_super) {\n __extends(WebApiAdaptor, _super);\n function WebApiAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WebApiAdaptor.prototype.getModuleName = function () {\n return 'WebApiAdaptor';\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n type: 'POST',\n url: dm.dataSource.url,\n data: JSON.stringify(data)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n return {\n type: 'DELETE',\n url: dm.dataSource.url + '/' + value,\n data: JSON.stringify(value)\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n return {\n type: 'PUT',\n url: dm.dataSource.url,\n data: JSON.stringify(value)\n };\n };\n WebApiAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var _this = this;\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var req = [];\n var _loop_1 = function (i, x) {\n changes.addedRecords.forEach(function (j, d) {\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('POST ' + '/api/' + (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.addedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //insertion\n for (var i = 0, x = changes.addedRecords.length; i < x; i++) {\n _loop_1(i, x);\n }\n var _loop_2 = function (i, x) {\n changes.changedRecords.forEach(function (j, d) {\n var stat = {\n 'method': _this.options.updateType + ' ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('PUT ' + '/api/' + (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.changedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //updation\n for (var i = 0, x = changes.changedRecords.length; i < x; i++) {\n _loop_2(i, x);\n }\n var _loop_3 = function (i, x) {\n changes.deletedRecords.forEach(function (j, d) {\n var state = {\n 'mtd': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '/' + url;\n }\n else if (url instanceof Date) {\n var datTime = data[i][key];\n return '/' + datTime.toJSON();\n }\n else {\n return \"/'\" + url + \"'\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('DELETE ' + '/api/' + (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url)\n + state.url(changes.deletedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //deletion\n for (var i = 0, x = changes.deletedRecords.length; i < x; i++) {\n _loop_3(i, x);\n }\n req.push('--' + initialGuid + '--', '');\n return {\n type: 'POST',\n url: url,\n contentType: 'multipart/mixed; boundary=' + initialGuid,\n data: req.join('\\r\\n')\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n WebApiAdaptor.prototype.beforeSend = function (dm, request, settings) {\n request.setRequestHeader('Accept', 'application/json, text/javascript, */*; q=0.01');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n WebApiAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var count = null;\n var args = {};\n if (request && request.type.toLowerCase() !== 'post') {\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n if (!DataUtil.isNull(data.Count)) {\n count = data.Count;\n }\n }\n if (version < 3 && data.Items) {\n data = data.Items;\n }\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n }\n args.result = args.result || data;\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n return WebApiAdaptor;\n}(ODataAdaptor));\nexport { WebApiAdaptor };\n/**\n * WebMethodAdaptor can be used by DataManager to interact with web method.\n *\n * @hidden\n */\nvar WebMethodAdaptor = /** @class */ (function (_super) {\n __extends(WebMethodAdaptor, _super);\n function WebMethodAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Prepare the request body based on the query.\n * The query information can be accessed at the WebMethod using variable named `value`.\n *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param hierarchyFilters\n * @returns application\n */\n WebMethodAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var obj = new UrlAdaptor().processQuery(dm, query, hierarchyFilters);\n var getData = 'data';\n var data = DataUtil.parse.parseJson(obj[getData]);\n var result = {};\n var value = 'value';\n if (data.param) {\n for (var i = 0; i < data.param.length; i++) {\n var param = data.param[i];\n var key = Object.keys(param)[0];\n result[key] = param[key];\n }\n }\n result[value] = data;\n var pvtData = 'pvtData';\n var url = 'url';\n return {\n data: JSON.stringify(result),\n url: obj[url],\n pvtData: obj[pvtData],\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n };\n return WebMethodAdaptor;\n}(UrlAdaptor));\nexport { WebMethodAdaptor };\n/**\n * RemoteSaveAdaptor, extended from JsonAdaptor and it is used for binding local data and performs all DataManager queries in client-side.\n * It interacts with server-side only for CRUD operations.\n *\n * @hidden\n */\nvar RemoteSaveAdaptor = /** @class */ (function (_super) {\n __extends(RemoteSaveAdaptor, _super);\n /**\n * @hidden\n */\n function RemoteSaveAdaptor() {\n var _this = _super.call(this) || this;\n setValue('beforeSend', UrlAdaptor.prototype.beforeSend, _this);\n return _this;\n }\n RemoteSaveAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n this.pvt.position = position;\n this.updateType = 'add';\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.remove = function (dm, keyField, val, tableName, query) {\n _super.prototype.remove.call(this, dm, keyField, val);\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: val,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.update = function (dm, keyField, val, tableName, query) {\n this.updateType = 'update';\n this.updateKey = keyField;\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: val,\n action: 'update',\n keyColumn: keyField,\n key: val[keyField],\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes, e) {\n var i;\n var newData = request ? JSON.parse(request.data) : data;\n data = newData.action === 'batch' ? DataUtil.parse.parseJson(data) : data;\n if (this.updateType === 'add') {\n _super.prototype.insert.call(this, ds, data, null, null, this.pvt.position);\n }\n if (this.updateType === 'update') {\n _super.prototype.update.call(this, ds, this.updateKey, data);\n }\n this.updateType = undefined;\n if (data.added) {\n for (i = 0; i < data.added.length; i++) {\n _super.prototype.insert.call(this, ds, data.added[i]);\n }\n }\n if (data.changed) {\n for (i = 0; i < data.changed.length; i++) {\n _super.prototype.update.call(this, ds, e.key, data.changed[i]);\n }\n }\n if (data.deleted) {\n for (i = 0; i < data.deleted.length; i++) {\n _super.prototype.remove.call(this, ds, e.key, data.deleted[i]);\n }\n }\n return data;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * Also perform the changes in the locally cached data to sync with the remote data.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\n */\n RemoteSaveAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e.url,\n key: e.key\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.addParams = function (options) {\n var urlParams = new UrlAdaptor();\n urlParams.addParams(options);\n };\n return RemoteSaveAdaptor;\n}(JsonAdaptor));\nexport { RemoteSaveAdaptor };\n/**\n * Ajax Adaptor that is extended from URL Adaptor, is used for handle data operations with user defined functions.\n *\n * @hidden\n */\nvar CustomDataAdaptor = /** @class */ (function (_super) {\n __extends(CustomDataAdaptor, _super);\n function CustomDataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n getData: function () { },\n addRecord: function () { },\n updateRecord: function () { },\n deleteRecord: function () { },\n batchUpdate: function () { }\n });\n extend(_this.options, props || {});\n return _this;\n }\n CustomDataAdaptor.prototype.getModuleName = function () {\n return 'CustomDataAdaptor';\n };\n return CustomDataAdaptor;\n}(UrlAdaptor));\nexport { CustomDataAdaptor };\n/**\n * The GraphqlAdaptor that is extended from URL Adaptor, is used for retrieving data from the Graphql server.\n * It interacts with the Graphql server with all the DataManager Queries and performs CRUD operations.\n *\n * @hidden\n */\nvar GraphQLAdaptor = /** @class */ (function (_super) {\n __extends(GraphQLAdaptor, _super);\n function GraphQLAdaptor(options) {\n var _this = _super.call(this) || this;\n _this.opt = options;\n _this.schema = _this.opt.response;\n _this.query = _this.opt.query;\n /* eslint-disable @typescript-eslint/no-empty-function */\n // tslint:disable-next-line:no-empty\n _this.getVariables = _this.opt.getVariables ? _this.opt.getVariables : function () { };\n /* eslint-enable @typescript-eslint/no-empty-function */\n _this.getQuery = function () { return _this.query; };\n return _this;\n }\n GraphQLAdaptor.prototype.getModuleName = function () {\n return 'GraphQLAdaptor';\n };\n /**\n * Process the JSON data based on the provided queries.\n *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param datamanager\n * @param query\n */\n GraphQLAdaptor.prototype.processQuery = function (datamanager, query) {\n var urlQuery = _super.prototype.processQuery.apply(this, arguments);\n var dm = JSON.parse(urlQuery.data);\n // constructing GraphQL parameters\n var keys = ['skip', 'take', 'sorted', 'table', 'select', 'where',\n 'search', 'requiresCounts', 'aggregates', 'params'];\n var temp = {};\n var str = 'searchwhereparams';\n keys.filter(function (e) {\n temp[e] = str.indexOf(e) > -1 ? JSON.stringify(dm[e]) : dm[e];\n });\n var vars = this.getVariables() || {};\n // tslint:disable-next-line:no-string-literal\n vars['datamanager'] = temp;\n var data = JSON.stringify({\n query: this.getQuery(),\n variables: vars\n });\n urlQuery.data = data;\n return urlQuery;\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Object} request?\n * @param resData\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @returns DataResult\n */\n GraphQLAdaptor.prototype.processResponse = function (resData, ds, query, xhr, request) {\n var res = resData;\n var count;\n var aggregates;\n var result = getValue(this.schema.result, res.data);\n if (this.schema.count) {\n count = getValue(this.schema.count, res.data);\n }\n if (this.schema.aggregates) {\n aggregates = getValue(this.schema.aggregates, res.data);\n aggregates = !isNullOrUndefined(aggregates) ? DataUtil.parse.parseJson(aggregates) : aggregates;\n }\n var pvt = request.pvtData || {};\n var args = { result: result, aggregates: aggregates };\n var data = args;\n if (pvt && pvt.groups && pvt.groups.length) {\n this.getAggregateResult(pvt, data, args, null, query);\n }\n return !isNullOrUndefined(count) ? { result: args.result, count: count, aggregates: aggregates } : args.result;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n */\n GraphQLAdaptor.prototype.insert = function () {\n var inserted = _super.prototype.insert.apply(this, arguments);\n return this.generateCrudData(inserted, 'insert');\n };\n /**\n * Prepare and returns request body which is used to update a new record in the table.\n */\n GraphQLAdaptor.prototype.update = function () {\n var inserted = _super.prototype.update.apply(this, arguments);\n return this.generateCrudData(inserted, 'update');\n };\n /**\n * Prepare and returns request body which is used to remove a new record in the table.\n */\n GraphQLAdaptor.prototype.remove = function () {\n var inserted = _super.prototype.remove.apply(this, arguments);\n return this.generateCrudData(inserted, 'remove');\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param e.key\n * @param {Query} query\n * @param {Object} original\n */\n GraphQLAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var batch = _super.prototype.batchRequest.apply(this, arguments);\n // tslint:disable-next-line:typedef\n var bData = JSON.parse(batch.data);\n bData.key = e.key;\n batch.data = JSON.stringify(bData);\n return this.generateCrudData(batch, 'batch');\n };\n GraphQLAdaptor.prototype.generateCrudData = function (crudData, action) {\n var parsed = JSON.parse(crudData.data);\n crudData.data = JSON.stringify({\n query: this.opt.getMutation(action),\n variables: parsed\n });\n return crudData;\n };\n return GraphQLAdaptor;\n}(UrlAdaptor));\nexport { GraphQLAdaptor };\n/**\n * Cache Adaptor is used to cache the data of the visited pages. It prevents new requests for the previously visited pages.\n * You can configure cache page size and duration of caching by using cachingPageSize and timeTillExpiration properties of the DataManager\n *\n * @hidden\n */\nvar CacheAdaptor = /** @class */ (function (_super) {\n __extends(CacheAdaptor, _super);\n /**\n * Constructor for CacheAdaptor class.\n *\n * @param {CacheAdaptor} adaptor?\n * @param {number} timeStamp?\n * @param {number} pageSize?\n * @param adaptor\n * @param timeStamp\n * @param pageSize\n * @hidden\n */\n function CacheAdaptor(adaptor, timeStamp, pageSize) {\n var _this = _super.call(this) || this;\n _this.isCrudAction = false;\n _this.isInsertAction = false;\n if (!isNullOrUndefined(adaptor)) {\n _this.cacheAdaptor = adaptor;\n }\n _this.pageSize = pageSize;\n _this.guidId = DataUtil.getGuid('cacheAdaptor');\n var obj = { keys: [], results: [] };\n window.localStorage.setItem(_this.guidId, JSON.stringify(obj));\n var guid = _this.guidId;\n if (!isNullOrUndefined(timeStamp)) {\n setInterval(function () {\n var data = DataUtil.parse.parseJson(window.localStorage.getItem(guid));\n var forDel = [];\n for (var i = 0; i < data.results.length; i++) {\n var currentTime = +new Date();\n var requestTime = +new Date(data.results[i].timeStamp);\n data.results[i].timeStamp = currentTime - requestTime;\n if (currentTime - requestTime > timeStamp) {\n forDel.push(i);\n }\n }\n for (var i = 0; i < forDel.length; i++) {\n data.results.splice(forDel[i], 1);\n data.keys.splice(forDel[i], 1);\n }\n window.localStorage.removeItem(guid);\n window.localStorage.setItem(guid, JSON.stringify(data));\n }, timeStamp);\n }\n return _this;\n }\n /**\n * It will generate the key based on the URL when we send a request to server.\n *\n * @param {string} url\n * @param {Query} query?\n * @param query\n * @hidden\n */\n CacheAdaptor.prototype.generateKey = function (url, query) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var key = url;\n var page = 'onPage';\n if (page in singles) {\n key += singles[page].pageIndex;\n }\n queries.sorts.forEach(function (obj) {\n key += obj.e.direction + obj.e.fieldName;\n });\n queries.groups.forEach(function (obj) {\n key += obj.e.fieldName;\n });\n queries.searches.forEach(function (obj) {\n key += obj.e.searchKey;\n });\n for (var filter = 0; filter < queries.filters.length; filter++) {\n var currentFilter = queries.filters[filter];\n if (currentFilter.e.isComplex) {\n var newQuery = query.clone();\n newQuery.queries = [];\n for (var i = 0; i < currentFilter.e.predicates.length; i++) {\n newQuery.queries.push({ fn: 'onWhere', e: currentFilter.e.predicates[i], filter: query.queries.filter });\n }\n key += currentFilter.e.condition + this.generateKey(url, newQuery);\n }\n else {\n key += currentFilter.e.field + currentFilter.e.operator + currentFilter.e.value;\n }\n }\n return key;\n };\n /**\n * Process the query to generate request body.\n * If the data is already cached, it will return the cached data.\n *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param {Object[]} hierarchyFilters?\n * @param query\n * @param hierarchyFilters\n */\n CacheAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var key = this.generateKey(dm.dataSource.url, query);\n var cachedItems = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var data = cachedItems ? cachedItems.results[cachedItems.keys.indexOf(key)] : null;\n if (data != null && !this.isCrudAction && !this.isInsertAction) {\n return data;\n }\n this.isCrudAction = null;\n this.isInsertAction = null;\n /* eslint-disable prefer-spread */\n return this.cacheAdaptor.processQuery.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n */\n CacheAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (this.isInsertAction || (request && this.cacheAdaptor.options.batch &&\n DataUtil.endsWith(request.url, this.cacheAdaptor.options.batch) && request.type.toLowerCase() === 'post')) {\n return this.cacheAdaptor.processResponse(data, ds, query, xhr, request, changes);\n }\n /* eslint-disable prefer-spread */\n data = this.cacheAdaptor.processResponse.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n var key = query ? this.generateKey(ds.dataSource.url, query) : ds.dataSource.url;\n var obj = {};\n obj = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var index = obj.keys.indexOf(key);\n if (index !== -1) {\n obj.results.splice(index, 1);\n obj.keys.splice(index, 1);\n }\n obj.results[obj.keys.push(key) - 1] = { keys: key, result: data.result, timeStamp: new Date(), count: data.count };\n while (obj.results.length > this.pageSize) {\n obj.results.splice(0, 1);\n obj.keys.splice(0, 1);\n }\n window.localStorage.setItem(this.guidId, JSON.stringify(obj));\n return data;\n };\n /**\n * Method will trigger before send the request to server side. Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n * @param settings\n */\n CacheAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (!isNullOrUndefined(this.cacheAdaptor.options.batch) && DataUtil.endsWith(settings.url, this.cacheAdaptor.options.batch)\n && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.multipartAccept);\n }\n if (!dm.dataSource.crossDomain) {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.accept);\n }\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n CacheAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.update(dm, keyField, value, tableName);\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n CacheAdaptor.prototype.insert = function (dm, data, tableName) {\n this.isInsertAction = true;\n return this.cacheAdaptor.insert(dm, data, tableName);\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n */\n CacheAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.remove(dm, keyField, value, tableName);\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n CacheAdaptor.prototype.batchRequest = function (dm, changes, e) {\n return this.cacheAdaptor.batchRequest(dm, changes, e);\n };\n return CacheAdaptor;\n}(UrlAdaptor));\nexport { CacheAdaptor };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { Ajax } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Predicate, Query } from './query';\nimport { ODataAdaptor, JsonAdaptor, CacheAdaptor, RemoteSaveAdaptor, CustomDataAdaptor } from './adaptors';\n/**\n * DataManager is used to manage and manipulate relational data.\n */\nvar DataManager = /** @class */ (function () {\n /**\n * Constructor for DataManager class\n *\n * @param {DataOptions|JSON[]} dataSource?\n * @param {Query} query?\n * @param {AdaptorOptions|string} adaptor?\n * @param dataSource\n * @param query\n * @param adaptor\n * @hidden\n */\n function DataManager(dataSource, query, adaptor) {\n var _this = this;\n /** @hidden */\n this.dateParse = true;\n /** @hidden */\n this.timeZoneHandling = true;\n this.persistQuery = {};\n this.isInitialLoad = false;\n this.requests = [];\n this.isInitialLoad = true;\n if (!dataSource && !this.dataSource) {\n dataSource = [];\n }\n adaptor = adaptor || dataSource.adaptor;\n if (dataSource && dataSource.timeZoneHandling === false) {\n this.timeZoneHandling = dataSource.timeZoneHandling;\n }\n var data;\n if (dataSource instanceof Array) {\n data = {\n json: dataSource,\n offline: true\n };\n }\n else if (typeof dataSource === 'object') {\n if (!dataSource.json) {\n dataSource.json = [];\n }\n if (!dataSource.enablePersistence) {\n dataSource.enablePersistence = false;\n }\n if (!dataSource.id) {\n dataSource.id = '';\n }\n if (!dataSource.ignoreOnPersist) {\n dataSource.ignoreOnPersist = [];\n }\n data = {\n url: dataSource.url,\n insertUrl: dataSource.insertUrl,\n removeUrl: dataSource.removeUrl,\n updateUrl: dataSource.updateUrl,\n crudUrl: dataSource.crudUrl,\n batchUrl: dataSource.batchUrl,\n json: dataSource.json,\n headers: dataSource.headers,\n accept: dataSource.accept,\n data: dataSource.data,\n timeTillExpiration: dataSource.timeTillExpiration,\n cachingPageSize: dataSource.cachingPageSize,\n enableCaching: dataSource.enableCaching,\n requestType: dataSource.requestType,\n key: dataSource.key,\n crossDomain: dataSource.crossDomain,\n jsonp: dataSource.jsonp,\n dataType: dataSource.dataType,\n offline: dataSource.offline !== undefined ? dataSource.offline\n : dataSource.adaptor instanceof RemoteSaveAdaptor || dataSource.adaptor instanceof CustomDataAdaptor ?\n false : dataSource.url ? false : true,\n requiresFormat: dataSource.requiresFormat,\n enablePersistence: dataSource.enablePersistence,\n id: dataSource.id,\n ignoreOnPersist: dataSource.ignoreOnPersist\n };\n }\n else {\n DataUtil.throwError('DataManager: Invalid arguments');\n }\n if (data.requiresFormat === undefined && !DataUtil.isCors()) {\n data.requiresFormat = isNullOrUndefined(data.crossDomain) ? true : data.crossDomain;\n }\n if (data.dataType === undefined) {\n data.dataType = 'json';\n }\n this.dataSource = data;\n this.defaultQuery = query;\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\n if (data.url && data.offline && !data.json.length) {\n this.isDataAvailable = false;\n this.adaptor = adaptor || new ODataAdaptor();\n this.dataSource.offline = false;\n this.ready = this.executeQuery(query || new Query());\n this.ready.then(function (e) {\n _this.dataSource.offline = true;\n _this.isDataAvailable = true;\n data.json = e.result;\n _this.adaptor = new JsonAdaptor();\n });\n }\n else {\n this.adaptor = data.offline ? new JsonAdaptor() : new ODataAdaptor();\n }\n if (!data.jsonp && this.adaptor instanceof ODataAdaptor) {\n data.jsonp = 'callback';\n }\n this.adaptor = adaptor || this.adaptor;\n if (data.enableCaching) {\n this.adaptor = new CacheAdaptor(this.adaptor, data.timeTillExpiration, data.cachingPageSize);\n }\n return this;\n }\n /**\n * Get the queries maintained in the persisted state.\n * @param {string} id - The identifier of the persisted query to retrieve.\n * @returns {object} The persisted data object.\n */\n DataManager.prototype.getPersistedData = function (id) {\n var persistedData = localStorage.getItem(id || this.dataSource.id);\n return JSON.parse(persistedData);\n };\n /**\n * Set the queries to be maintained in the persisted state.\n * @param {Event} e - The event parameter that triggers the setPersistData method.\n * @param {string} id - The identifier of the persisted query to set.\n * @param {object} persistData - The data to be persisted.\n * @returns {void} .\n */\n DataManager.prototype.setPersistData = function (e, id, persistData) {\n localStorage.setItem(id || this.dataSource.id, JSON.stringify(persistData || this.persistQuery));\n };\n DataManager.prototype.setPersistQuery = function (query) {\n var _this = this;\n var persistedQuery = this.getPersistedData();\n if (this.isInitialLoad && persistedQuery && Object.keys(persistedQuery).length) {\n this.persistQuery = persistedQuery;\n this.persistQuery.queries = this.persistQuery.queries.filter(function (query) {\n if (_this.dataSource.ignoreOnPersist && _this.dataSource.ignoreOnPersist.length) {\n if (query.fn && _this.dataSource.ignoreOnPersist.some(function (keyword) { return query.fn === keyword; })) {\n return false; // Exclude the matching query\n }\n }\n if (query.fn === 'onWhere') {\n var e = query.e;\n if (e && e.isComplex && e.predicates instanceof Array) {\n var allPredicates = e.predicates.map(function (predicateObj) {\n if (predicateObj.predicates && predicateObj.predicates instanceof Array) {\n // Process nested predicate array\n var nestedPredicates = predicateObj.predicates.map(function (nestedPredicate) {\n var field = nestedPredicate.field, operator = nestedPredicate.operator, value = nestedPredicate.value, ignoreCase = nestedPredicate.ignoreCase, ignoreAccent = nestedPredicate.ignoreAccent, matchCase = nestedPredicate.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n });\n return predicateObj.condition === 'and' ? Predicate.and(nestedPredicates) : Predicate.or(nestedPredicates);\n }\n else {\n // Process individual predicate\n var field = predicateObj.field, operator = predicateObj.operator, value = predicateObj.value, ignoreCase = predicateObj.ignoreCase, ignoreAccent = predicateObj.ignoreAccent, matchCase = predicateObj.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n });\n query.e = new Predicate(allPredicates[0], e.condition, allPredicates.slice(1));\n }\n }\n return true; // Keep all other queries\n });\n var newQuery = extend(new Query(), this.persistQuery);\n this.isInitialLoad = false;\n return (newQuery);\n }\n else {\n this.persistQuery = query;\n this.isInitialLoad = false;\n return query;\n }\n };\n /**\n * Overrides DataManager's default query with given query.\n *\n * @param {Query} query - Defines the new default query.\n */\n DataManager.prototype.setDefaultQuery = function (query) {\n this.defaultQuery = query;\n return this;\n };\n /**\n * Executes the given query with local data source.\n *\n * @param {Query} query - Defines the query to retrieve data.\n */\n DataManager.prototype.executeLocal = function (query) {\n if (!this.defaultQuery && !(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeLocal() : A query is required to execute');\n }\n if (!this.dataSource.json) {\n DataUtil.throwError('DataManager - executeLocal() : Json data is required to execute');\n }\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\n }\n query = query || this.defaultQuery;\n var result = this.adaptor.processQuery(this, query);\n if (query.subQuery) {\n var from = query.subQuery.fromTable;\n var lookup = query.subQuery.lookups;\n var res = query.isCountRequired ? result.result :\n result;\n if (lookup && lookup instanceof Array) {\n DataUtil.buildHierarchy(query.subQuery.fKey, from, res, lookup, query.subQuery.key);\n }\n for (var j = 0; j < res.length; j++) {\n if (res[j][from] instanceof Array) {\n res[j] = extend({}, {}, res[j]);\n res[j][from] = this.adaptor.processResponse(query.subQuery.using(new DataManager(res[j][from].slice(0))).executeLocal(), this, query);\n }\n }\n }\n return this.adaptor.processResponse(result, this, query);\n };\n /**\n * Executes the given query with either local or remote data source.\n * It will be executed as asynchronously and returns Promise object which will be resolved or rejected after action completed.\n *\n * @param {Query|Function} query - Defines the query to retrieve data.\n * @param {Function} done - Defines the callback function and triggers when the Promise is resolved.\n * @param {Function} fail - Defines the callback function and triggers when the Promise is rejected.\n * @param {Function} always - Defines the callback function and triggers when the Promise is resolved or rejected.\n */\n DataManager.prototype.executeQuery = function (query, done, fail, always) {\n var _this = this;\n var makeRequest = 'makeRequest';\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\n }\n if (typeof query === 'function') {\n always = fail;\n fail = done;\n done = query;\n query = null;\n }\n if (!query) {\n query = this.defaultQuery;\n }\n if (!(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeQuery() : A query is required to execute');\n }\n var deffered = new Deferred();\n var args = { query: query };\n if (!this.dataSource.offline && (this.dataSource.url !== undefined && this.dataSource.url !== '')\n || (!isNullOrUndefined(this.adaptor[makeRequest])) || this.isCustomDataAdaptor(this.adaptor)) {\n var result = this.adaptor.processQuery(this, query);\n if (!isNullOrUndefined(this.adaptor[makeRequest])) {\n this.adaptor[makeRequest](result, deffered, args, query);\n }\n else if (!isNullOrUndefined(result.url) || this.isCustomDataAdaptor(this.adaptor)) {\n this.requests = [];\n this.makeRequest(result, deffered, args, query);\n }\n else {\n args = DataManager.getDeferedArgs(query, result, args);\n deffered.resolve(args);\n }\n }\n else {\n DataManager.nextTick(function () {\n var res = _this.executeLocal(query);\n args = DataManager.getDeferedArgs(query, res, args);\n deffered.resolve(args);\n });\n }\n if (done || fail) {\n deffered.promise.then(done, fail);\n }\n if (always) {\n deffered.promise.then(always, always);\n }\n return deffered.promise;\n };\n DataManager.getDeferedArgs = function (query, result, args) {\n if (query.isCountRequired) {\n args.result = result.result;\n args.count = result.count;\n args.aggregates = result.aggregates;\n }\n else {\n args.result = result;\n }\n return args;\n };\n DataManager.nextTick = function (fn) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n (window.setImmediate || window.setTimeout)(fn, 0);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n };\n DataManager.prototype.extendRequest = function (url, fnSuccess, fnFail) {\n return extend({}, {\n type: 'GET',\n dataType: this.dataSource.dataType,\n crossDomain: this.dataSource.crossDomain,\n jsonp: this.dataSource.jsonp,\n cache: true,\n processData: false,\n onSuccess: fnSuccess,\n onFailure: fnFail\n }, url);\n };\n // tslint:disable-next-line:max-func-body-length\n DataManager.prototype.makeRequest = function (url, deffered, args, query) {\n var _this = this;\n var isSelector = !!query.subQuerySelector;\n var fnFail = function (e) {\n args.error = e;\n deffered.reject(args);\n };\n var process = function (data, count, xhr, request, actual, aggregates, virtualSelectRecords) {\n args.xhr = xhr;\n args.count = count ? parseInt(count.toString(), 10) : 0;\n args.result = data;\n args.request = request;\n args.aggregates = aggregates;\n args.actual = actual;\n args.virtualSelectRecords = virtualSelectRecords;\n deffered.resolve(args);\n };\n var fnQueryChild = function (data, selector) {\n var subDeffer = new Deferred();\n var childArgs = { parent: args };\n query.subQuery.isChild = true;\n var subUrl = _this.adaptor.processQuery(_this, query.subQuery, data ? _this.adaptor.processResponse(data) : selector);\n var childReq = _this.makeRequest(subUrl, subDeffer, childArgs, query.subQuery);\n if (!isSelector) {\n subDeffer.then(function (subData) {\n if (data) {\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, data, subData, query.subQuery.key);\n process(data, subData.count, subData.xhr);\n }\n }, fnFail);\n }\n return childReq;\n };\n var fnSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n return fnFail(data['errors'], request);\n }\n }\n if (_this.isCustomDataAdaptor(_this.adaptor)) {\n request = extend({}, _this.ajaxReqOption, request);\n }\n if (request.httpRequest.getResponseHeader('Content-Type').indexOf('xml') === -1 && _this.dateParse) {\n data = DataUtil.parse.parseJson(data);\n }\n var result = _this.adaptor.processResponse(data, _this, query, request.httpRequest, request);\n var count = 0;\n var aggregates = null;\n var virtualSelectRecords = 'virtualSelectRecords';\n var virtualRecords = data[virtualSelectRecords];\n if (query.isCountRequired) {\n count = result.count;\n aggregates = result.aggregates;\n result = result.result;\n }\n if (!query.subQuery) {\n process(result, count, request.httpRequest, request.type, data, aggregates, virtualRecords);\n return;\n }\n if (!isSelector) {\n fnQueryChild(result, request);\n }\n };\n var req = this.extendRequest(url, fnSuccess, fnFail);\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var ajax_1 = new Ajax(req);\n ajax_1.beforeSend = function () {\n _this.beforeSend(ajax_1.httpRequest, ajax_1);\n };\n req = ajax_1.send();\n req.catch(function (e) { return true; }); // to handle failure remote requests.\n this.requests.push(ajax_1);\n }\n else {\n this.ajaxReqOption = req;\n var request = req;\n this.adaptor.options.getData({\n data: request.data,\n onSuccess: request.onSuccess, onFailure: request.onFailure\n });\n }\n if (isSelector) {\n var promise = void 0;\n var res = query.subQuerySelector.call(this, { query: query.subQuery, parent: query });\n if (res && res.length) {\n promise = Promise.all([req, fnQueryChild(null, res)]);\n promise.then(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = args[0];\n var pResult = _this.adaptor.processResponse(result[0], _this, query, _this.requests[0].httpRequest, _this.requests[0]);\n var count = 0;\n if (query.isCountRequired) {\n count = pResult.count;\n pResult = pResult.result;\n }\n var cResult = _this.adaptor.processResponse(result[1], _this, query.subQuery, _this.requests[1].httpRequest, _this.requests[1]);\n count = 0;\n if (query.subQuery.isCountRequired) {\n count = cResult.count;\n cResult = cResult.result;\n }\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, pResult, cResult, query.subQuery.key);\n isSelector = false;\n process(pResult, count, _this.requests[0].httpRequest);\n });\n }\n else {\n isSelector = false;\n }\n }\n return req;\n };\n DataManager.prototype.beforeSend = function (request, settings) {\n this.adaptor.beforeSend(this, request, settings);\n var headers = this.dataSource.headers;\n var props;\n for (var i = 0; headers && i < headers.length; i++) {\n props = [];\n var keys = Object.keys(headers[i]);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n props.push(prop);\n request.setRequestHeader(prop, headers[i][prop]);\n }\n }\n };\n /**\n * Save bulk changes to the given table name.\n * User can add a new record, edit an existing record, and delete a record at the same time.\n * If the datasource from remote, then updated in a single post.\n *\n * @param {Object} changes - Defines the CrudOptions.\n * @param {string} key - Defines the column field.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n * @param original\n */\n DataManager.prototype.saveChanges = function (changes, key, tableName, query, original) {\n var _this = this;\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var args = {\n url: tableName,\n key: key || this.dataSource.key\n };\n var req = this.adaptor.batchRequest(this, changes, args, query || new Query(), original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else if (!this.isCustomDataAdaptor(this.adaptor)) {\n var deff_1 = new Deferred();\n var ajax_2 = new Ajax(req);\n ajax_2.beforeSend = function () {\n _this.beforeSend(ajax_2.httpRequest, ajax_2);\n };\n ajax_2.onSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n ajax_2.onFailure(JSON.stringify(data['errors']));\n }\n }\n deff_1.resolve(_this.adaptor.processResponse(data, _this, null, request.httpRequest, request, changes, args));\n };\n ajax_2.onFailure = function (e) {\n deff_1.reject([{ error: e }]);\n };\n ajax_2.send().catch(function (e) { return true; }); // to handle the failure requests.\n return deff_1.promise;\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.batchUpdate);\n }\n };\n /**\n * Inserts new record in the given table.\n *\n * @param {Object} data - Defines the data to insert.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n * @param position\n */\n DataManager.prototype.insert = function (data, tableName, query, position) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var req = this.adaptor.insert(this, data, tableName, query, position);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.addRecord);\n }\n };\n /**\n * Removes data from the table with the given key.\n *\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.remove = function (keyField, value, tableName, query) {\n if (typeof value === 'object') {\n value = DataUtil.getObject(keyField, value);\n }\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.remove(this, keyField, value, tableName, query);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var remove = this.adaptor.options.deleteRecord;\n return this.doAjaxRequest(res, remove);\n }\n };\n /**\n * Updates existing record in the given table.\n *\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n * @param original\n */\n DataManager.prototype.update = function (keyField, value, tableName, query, original) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.update(this, keyField, value, tableName, query, original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var update = this.adaptor.options.updateRecord;\n return this.doAjaxRequest(res, update);\n }\n };\n DataManager.prototype.isCustomDataAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'CustomDataAdaptor';\n };\n DataManager.prototype.isGraphQLAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'GraphQLAdaptor';\n };\n DataManager.prototype.successFunc = function (record, request) {\n if (this.isGraphQLAdaptor(this.adaptor)) {\n var data = JSON.parse(record);\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n this.failureFunc(JSON.stringify(data['errors']));\n }\n }\n if (this.isCustomDataAdaptor(this.adaptor)) {\n request = extend({}, this.ajaxReqOption, request);\n }\n try {\n DataUtil.parse.parseJson(record);\n }\n catch (e) {\n record = [];\n }\n record = this.adaptor.processResponse(DataUtil.parse.parseJson(record), this, null, request.httpRequest, request);\n this.ajaxDeffered.resolve(record);\n };\n DataManager.prototype.failureFunc = function (e) {\n this.ajaxDeffered.reject([{ error: e }]);\n };\n DataManager.prototype.doAjaxRequest = function (res, ajaxFunc) {\n var _this = this;\n res = extend({}, {\n type: 'POST',\n contentType: 'application/json; charset=utf-8',\n processData: false\n }, res);\n this.ajaxDeffered = new Deferred();\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var ajax_3 = new Ajax(res);\n ajax_3.beforeSend = function () {\n _this.beforeSend(ajax_3.httpRequest, ajax_3);\n };\n ajax_3.onSuccess = this.successFunc.bind(this);\n ajax_3.onFailure = this.failureFunc.bind(this);\n ajax_3.send().catch(function (e) { return true; }); // to handle the failure requests.\n }\n else {\n this.ajaxReqOption = res;\n ajaxFunc.call(this, {\n data: res.data, onSuccess: this.successFunc.bind(this),\n onFailure: this.failureFunc.bind(this)\n });\n }\n return this.ajaxDeffered.promise;\n };\n DataManager.prototype.clearPersistence = function () {\n window.removeEventListener('unload', this.setPersistData.bind(this));\n this.dataSource.enablePersistence = false;\n this.persistQuery = {};\n window.localStorage.setItem(this.dataSource.id, '[]');\n };\n return DataManager;\n}());\nexport { DataManager };\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @class */ (function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n }\n return Deferred;\n}());\nexport { Deferred };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { DataUtil } from './util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Query class is used to build query which is used by the DataManager to communicate with datasource.\n */\nvar Query = /** @class */ (function () {\n /**\n * Constructor for Query class.\n *\n * @param {string|string[]} from?\n * @param from\n * @hidden\n */\n function Query(from) {\n /** @hidden */\n this.subQuery = null;\n /** @hidden */\n this.isChild = false;\n /** @hidden */\n this.distincts = [];\n this.queries = [];\n this.key = '';\n this.fKey = '';\n if (typeof from === 'string') {\n this.fromTable = from;\n }\n else if (from && from instanceof Array) {\n this.lookups = from;\n }\n this.expands = [];\n this.sortedColumns = [];\n this.groupedColumns = [];\n this.subQuery = null;\n this.isChild = false;\n this.params = [];\n this.lazyLoad = [];\n return this;\n }\n /**\n * Sets the primary key.\n *\n * @param {string} field - Defines the column field.\n */\n Query.prototype.setKey = function (field) {\n this.key = field;\n return this;\n };\n /**\n * Sets default DataManager to execute query.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.using = function (dataManager) {\n this.dataManager = dataManager;\n return this;\n };\n /**\n * Executes query with the given DataManager.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n * @param {Function} done - Defines the success callback.\n * @param {Function} fail - Defines the failure callback.\n * @param {Function} always - Defines the callback which will be invoked on either success or failure.\n *\n *
\n     * let dataManager: DataManager = new DataManager([{ ID: '10' }, { ID: '2' }, { ID: '1' }, { ID: '20' }]);\n     * let query: Query = new Query();\n     * query.sortBy('ID', (x: string, y: string): number => { return parseInt(x, 10) - parseInt(y, 10) });\n     * let promise: Promise< Object > = query.execute(dataManager);\n     * promise.then((e: { result: Object }) => { });\n     * 
\n */\n Query.prototype.execute = function (dataManager, done, fail, always) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeQuery(this, done, fail, always);\n }\n return DataUtil.throwError('Query - execute() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Executes query with the local datasource.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.executeLocal = function (dataManager) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeLocal(this);\n }\n return DataUtil.throwError('Query - executeLocal() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Creates deep copy of the Query object.\n */\n Query.prototype.clone = function () {\n var cloned = new Query();\n cloned.queries = this.queries.slice(0);\n cloned.key = this.key;\n cloned.isChild = this.isChild;\n cloned.dataManager = this.dataManager;\n cloned.fromTable = this.fromTable;\n cloned.params = this.params.slice(0);\n cloned.expands = this.expands.slice(0);\n cloned.sortedColumns = this.sortedColumns.slice(0);\n cloned.groupedColumns = this.groupedColumns.slice(0);\n cloned.subQuerySelector = this.subQuerySelector;\n cloned.subQuery = this.subQuery;\n cloned.fKey = this.fKey;\n cloned.isCountRequired = this.isCountRequired;\n cloned.distincts = this.distincts.slice(0);\n cloned.lazyLoad = this.lazyLoad.slice(0);\n return cloned;\n };\n /**\n * Specifies the name of table to retrieve data in query execution.\n *\n * @param {string} tableName - Defines the table name.\n */\n Query.prototype.from = function (tableName) {\n this.fromTable = tableName;\n return this;\n };\n /**\n * Adds additional parameter which will be sent along with the request which will be generated while DataManager execute.\n *\n * @param {string} key - Defines the key of additional parameter.\n * @param {Function|string} value - Defines the value for the key.\n */\n Query.prototype.addParams = function (key, value) {\n if (typeof value === 'function') {\n this.params.push({ key: key, fn: value });\n }\n else {\n this.params.push({ key: key, value: value });\n }\n return this;\n };\n /**\n * @param fields\n * @hidden\n */\n Query.prototype.distinct = function (fields) {\n if (typeof fields === 'string') {\n this.distincts = [].slice.call([fields], 0);\n }\n else {\n this.distincts = fields.slice(0);\n }\n return this;\n };\n /**\n * Expands the related table.\n *\n * @param {string|Object[]} tables\n */\n Query.prototype.expand = function (tables) {\n if (typeof tables === 'string') {\n this.expands = [].slice.call([tables], 0);\n }\n else {\n this.expands = tables.slice(0);\n }\n return this;\n };\n /**\n * Filter data with given filter criteria.\n *\n * @param {string|Predicate} fieldName - Defines the column field or Predicate.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string|number|boolean} value - Defines the values to match with data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n * @param matchCase\n */\n Query.prototype.where = function (fieldName, operator, value, ignoreCase, ignoreAccent, matchCase) {\n operator = operator ? (operator).toLowerCase() : null;\n var predicate = null;\n if (typeof fieldName === 'string') {\n predicate = new Predicate(fieldName, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n else if (fieldName instanceof Predicate) {\n predicate = fieldName;\n }\n this.queries.push({\n fn: 'onWhere',\n e: predicate\n });\n return this;\n };\n /**\n * Search data with given search criteria.\n *\n * @param {string|number|boolean} searchKey - Defines the search key.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n * @param {string} operator - Defines the operator how to search data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n */\n Query.prototype.search = function (searchKey, fieldNames, operator, ignoreCase, ignoreAccent) {\n if (typeof fieldNames === 'string') {\n fieldNames = [fieldNames];\n }\n if (!operator || operator === 'none') {\n operator = 'contains';\n }\n var comparer = DataUtil.fnOperators[operator];\n this.queries.push({\n fn: 'onSearch',\n e: {\n fieldNames: fieldNames,\n operator: operator,\n searchKey: searchKey,\n ignoreCase: ignoreCase,\n ignoreAccent: ignoreAccent,\n comparer: comparer\n }\n });\n return this;\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n */\n Query.prototype.sortBy = function (fieldName, comparer, isFromGroup) {\n return this.sortByForeignKey(fieldName, comparer, isFromGroup);\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n * @param {string} direction - Defines the sort direction .\n */\n Query.prototype.sortByForeignKey = function (fieldName, comparer, isFromGroup, direction) {\n var order = !isNullOrUndefined(direction) ? direction : 'ascending';\n var sorts;\n var temp;\n if (typeof fieldName === 'string' && DataUtil.endsWith(fieldName.toLowerCase(), ' desc')) {\n fieldName = fieldName.replace(/ desc$/i, '');\n comparer = 'descending';\n }\n if (!comparer || typeof comparer === 'string') {\n order = comparer ? comparer.toLowerCase() : 'ascending';\n comparer = DataUtil.fnSort(comparer);\n }\n if (isFromGroup) {\n sorts = Query.filterQueries(this.queries, 'onSortBy');\n for (var i = 0; i < sorts.length; i++) {\n temp = sorts[i].e.fieldName;\n if (typeof temp === 'string') {\n if (temp === fieldName) {\n return this;\n }\n }\n else if (temp instanceof Array) {\n for (var j = 0; j < temp.length; j++) {\n if (temp[j] === fieldName || fieldName.toLowerCase() === temp[j] + ' desc') {\n return this;\n }\n }\n }\n }\n }\n this.queries.push({\n fn: 'onSortBy',\n e: {\n fieldName: fieldName,\n comparer: comparer,\n direction: order\n }\n });\n return this;\n };\n /**\n * Sorts data in descending order.\n *\n * @param {string} fieldName - Defines the column field.\n */\n Query.prototype.sortByDesc = function (fieldName) {\n return this.sortBy(fieldName, 'descending');\n };\n /**\n * Groups data with the given field name.\n *\n * @param {string} fieldName - Defines the column field.\n * @param fn\n * @param format\n */\n Query.prototype.group = function (fieldName, fn, format) {\n this.sortBy(fieldName, null, true);\n this.queries.push({\n fn: 'onGroup',\n e: {\n fieldName: fieldName,\n comparer: fn ? fn : null,\n format: format ? format : null\n }\n });\n return this;\n };\n /**\n * Gets data based on the given page index and size.\n *\n * @param {number} pageIndex - Defines the current page index.\n * @param {number} pageSize - Defines the no of records per page.\n */\n Query.prototype.page = function (pageIndex, pageSize) {\n this.queries.push({\n fn: 'onPage',\n e: {\n pageIndex: pageIndex,\n pageSize: pageSize\n }\n });\n return this;\n };\n /**\n * Gets data based on the given start and end index.\n *\n * @param {number} start - Defines the start index of the datasource.\n * @param {number} end - Defines the end index of the datasource.\n */\n Query.prototype.range = function (start, end) {\n this.queries.push({\n fn: 'onRange',\n e: {\n start: start,\n end: end\n }\n });\n return this;\n };\n /**\n * Gets data from the top of the data source based on given number of records count.\n *\n * @param {number} nos - Defines the no of records to retrieve from datasource.\n */\n Query.prototype.take = function (nos) {\n this.queries.push({\n fn: 'onTake',\n e: {\n nos: nos\n }\n });\n return this;\n };\n /**\n * Skips data with given number of records count from the top of the data source.\n *\n * @param {number} nos - Defines the no of records skip in the datasource.\n */\n Query.prototype.skip = function (nos) {\n this.queries.push({\n fn: 'onSkip',\n e: { nos: nos }\n });\n return this;\n };\n /**\n * Selects specified columns from the data source.\n *\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n */\n Query.prototype.select = function (fieldNames) {\n if (typeof fieldNames === 'string') {\n fieldNames = [].slice.call([fieldNames], 0);\n }\n this.queries.push({\n fn: 'onSelect',\n e: { fieldNames: fieldNames }\n });\n return this;\n };\n /**\n * Gets the records in hierarchical relationship from two tables. It requires the foreign key to relate two tables.\n *\n * @param {Query} query - Defines the query to relate two tables.\n * @param {Function} selectorFn - Defines the custom function to select records.\n */\n Query.prototype.hierarchy = function (query, selectorFn) {\n this.subQuerySelector = selectorFn;\n this.subQuery = query;\n return this;\n };\n /**\n * Sets the foreign key which is used to get data from the related table.\n *\n * @param {string} key - Defines the foreign key.\n */\n Query.prototype.foreignKey = function (key) {\n this.fKey = key;\n return this;\n };\n /**\n * It is used to get total number of records in the DataManager execution result.\n */\n Query.prototype.requiresCount = function () {\n this.isCountRequired = true;\n return this;\n };\n //type - sum, avg, min, max\n /**\n * Aggregate the data with given type and field name.\n *\n * @param {string} type - Defines the aggregate type.\n * @param {string} field - Defines the column field to aggregate.\n */\n Query.prototype.aggregate = function (type, field) {\n this.queries.push({\n fn: 'onAggregates',\n e: { field: field, type: type }\n });\n return this;\n };\n /**\n * Pass array of filterColumn query for performing filter operation.\n *\n * @param {QueryOptions[]} queries\n * @param {string} name\n * @hidden\n */\n Query.filterQueries = function (queries, name) {\n return queries.filter(function (q) {\n return q.fn === name;\n });\n };\n /**\n * To get the list of queries which is already filtered in current data source.\n *\n * @param {Object[]} queries\n * @param {string[]} singles\n * @hidden\n */\n Query.filterQueryLists = function (queries, singles) {\n var filtered = queries.filter(function (q) {\n return singles.indexOf(q.fn) !== -1;\n });\n var res = {};\n for (var i = 0; i < filtered.length; i++) {\n if (!res[filtered[i].fn]) {\n res[filtered[i].fn] = filtered[i].e;\n }\n }\n return res;\n };\n return Query;\n}());\nexport { Query };\n/**\n * Predicate class is used to generate complex filter criteria.\n * This will be used by DataManager to perform multiple filtering operation.\n */\nvar Predicate = /** @class */ (function () {\n /**\n * Constructor for Predicate class.\n *\n * @param {string|Predicate} field\n * @param {string} operator\n * @param {string|number|boolean|Predicate|Predicate[]} value\n * @param {boolean=false} ignoreCase\n * @param ignoreAccent\n * @param {boolean} matchCase\n * @hidden\n */\n function Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase) {\n if (ignoreCase === void 0) { ignoreCase = false; }\n /** @hidden */\n this.ignoreAccent = false;\n /** @hidden */\n this.isComplex = false;\n if (typeof field === 'string') {\n this.field = field;\n this.operator = operator.toLowerCase();\n this.value = value;\n this.matchCase = matchCase;\n this.ignoreCase = ignoreCase;\n this.ignoreAccent = ignoreAccent;\n this.isComplex = false;\n this.comparer = DataUtil.fnOperators.processOperator(this.operator);\n }\n else if (field instanceof Predicate && value instanceof Predicate || value instanceof Array) {\n this.isComplex = true;\n this.condition = operator.toLowerCase();\n this.predicates = [field];\n this.matchCase = field.matchCase;\n this.ignoreCase = field.ignoreCase;\n this.ignoreAccent = field.ignoreAccent;\n if (value instanceof Array) {\n [].push.apply(this.predicates, value);\n }\n else {\n this.predicates.push(value);\n }\n }\n return this;\n }\n /**\n * Adds n-number of new predicates on existing predicate with “and” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.and = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and');\n };\n /**\n * Adds new predicate on existing predicate with “and” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.and = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'and', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “or” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.or = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or');\n };\n /**\n * Adds new predicate on existing predicate with “or” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.or = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'or', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.ornot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.ornot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'ornot', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.andnot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.andnot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'andnot', ignoreCase, ignoreAccent);\n };\n /**\n * Converts plain JavaScript object to Predicate object.\n *\n * @param {Predicate[]|Predicate} json - Defines single or collection of Predicate.\n */\n Predicate.fromJson = function (json) {\n if (json instanceof Array) {\n var res = [];\n for (var i = 0, len = json.length; i < len; i++) {\n res.push(this.fromJSONData(json[i]));\n }\n return res;\n }\n var pred = json;\n return this.fromJSONData(pred);\n };\n /**\n * Validate the record based on the predicates.\n *\n * @param {Object} record - Defines the datasource record.\n */\n Predicate.prototype.validate = function (record) {\n var predicate = this.predicates ? this.predicates : [];\n var ret;\n var isAnd;\n if (!this.isComplex && this.comparer) {\n if (this.condition && this.condition.indexOf('not') !== -1) {\n this.condition = this.condition.split('not')[0] === '' ? undefined : this.condition.split('not')[0];\n return !this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n else {\n return this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (this.condition && this.condition.indexOf('not') !== -1) {\n isAnd = this.condition.indexOf('and') !== -1;\n }\n else {\n isAnd = this.condition === 'and';\n }\n for (var i = 0; i < predicate.length; i++) {\n if (i > 0 && this.condition && this.condition.indexOf('not') !== -1) {\n predicate[i].condition = predicate[i].condition ? predicate[i].condition + 'not' : 'not';\n }\n ret = predicate[i].validate(record);\n if (isAnd) {\n if (!ret) {\n return false;\n }\n }\n else {\n if (ret) {\n return true;\n }\n }\n }\n return isAnd;\n };\n /**\n * Converts predicates to plain JavaScript.\n * This method is uses Json stringify when serializing Predicate object.\n */\n Predicate.prototype.toJson = function () {\n var predicates;\n var p;\n if (this.isComplex) {\n predicates = [];\n p = this.predicates;\n for (var i = 0; i < p.length; i++) {\n predicates.push(p[i].toJson());\n }\n }\n return {\n isComplex: this.isComplex,\n field: this.field,\n operator: this.operator,\n value: this.value,\n ignoreCase: this.ignoreCase,\n ignoreAccent: this.ignoreAccent,\n condition: this.condition,\n predicates: predicates,\n matchCase: this.matchCase\n };\n };\n Predicate.combinePredicates = function (predicates, operator) {\n if (predicates.length === 1) {\n if (!(predicates[0] instanceof Array)) {\n return predicates[0];\n }\n predicates = predicates[0];\n }\n return new Predicate(predicates[0], operator, predicates.slice(1));\n };\n Predicate.combine = function (pred, field, operator, value, condition, ignoreCase, ignoreAccent) {\n if (field instanceof Predicate) {\n return Predicate[condition](pred, field);\n }\n if (typeof field === 'string') {\n return Predicate[condition](pred, new Predicate(field, operator, value, ignoreCase, ignoreAccent));\n }\n return DataUtil.throwError('Predicate - ' + condition + ' : invalid arguments');\n };\n Predicate.fromJSONData = function (json) {\n var preds = json.predicates || [];\n var len = preds.length;\n var predicates = [];\n var result;\n for (var i = 0; i < len; i++) {\n predicates.push(this.fromJSONData(preds[i]));\n }\n if (!json.isComplex) {\n result = new Predicate(json.field, json.operator, json.value, json.ignoreCase, json.ignoreAccent);\n }\n else {\n result = new Predicate(predicates[0], json.condition, predicates.slice(1));\n }\n return result;\n };\n return Predicate;\n}());\nexport { Predicate };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from './manager';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Data manager common utility methods.\n *\n * @hidden\n */\nvar DataUtil = /** @class */ (function () {\n function DataUtil() {\n }\n /**\n * Returns the value by invoking the provided parameter function.\n * If the paramater is not of type function then it will be returned as it is.\n *\n * @param {Function|string|string[]|number} value\n * @param {Object} inst?\n * @param inst\n * @hidden\n */\n DataUtil.getValue = function (value, inst) {\n if (typeof value === 'function') {\n return value.call(inst || {});\n }\n return value;\n };\n /**\n * Returns true if the input string ends with given string.\n *\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.endsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) === substr;\n };\n /**\n * Returns true if the input string not ends with given string.\n *\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.notEndsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) !== substr;\n };\n /**\n * Returns true if the input string starts with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.startsWith = function (input, start) {\n return input.slice(0, start.length) === start;\n };\n /**\n * Returns true if the input string not starts with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.notStartsWith = function (input, start) {\n return input.slice(0, start.length) !== start;\n };\n /**\n * Returns true if the input string pattern(wildcard) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.wildCard = function (input, pattern) {\n var asteriskSplit;\n var optionalSplit;\n // special character allowed search\n if (pattern.indexOf('[') !== -1) {\n pattern = pattern.split('[').join('[[]');\n }\n if (pattern.indexOf('(') !== -1) {\n pattern = pattern.split('(').join('[(]');\n }\n if (pattern.indexOf(')') !== -1) {\n pattern = pattern.split(')').join('[)]');\n }\n if (pattern.indexOf('\\\\') !== -1) {\n pattern = pattern.split('\\\\').join('[\\\\\\\\]');\n }\n if (pattern.indexOf('*') !== -1) {\n if (pattern.charAt(0) !== '*') {\n pattern = '^' + pattern;\n }\n if (pattern.charAt(pattern.length - 1) !== '*') {\n pattern = pattern + '$';\n }\n asteriskSplit = pattern.split('*');\n for (var i = 0; i < asteriskSplit.length; i++) {\n if (asteriskSplit[i].indexOf('.') === -1) {\n asteriskSplit[i] = asteriskSplit[i] + '.*';\n }\n else {\n asteriskSplit[i] = asteriskSplit[i] + '*';\n }\n }\n pattern = asteriskSplit.join('');\n }\n if (pattern.indexOf('%3f') !== -1 || pattern.indexOf('?') !== -1) {\n optionalSplit = pattern.indexOf('%3f') !== -1 ? pattern.split('%3f') : pattern.split('?');\n pattern = optionalSplit.join('.');\n }\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regexPattern = new RegExp(pattern, 'g');\n return regexPattern.test(input);\n };\n /**\n * Returns true if the input string pattern(like) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.like = function (input, pattern) {\n if (pattern.indexOf('%') !== -1) {\n if (pattern.charAt(0) === '%' && pattern.lastIndexOf('%') < 2) {\n pattern = pattern.substring(1, pattern.length);\n return DataUtil.startsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n }\n else if (pattern.charAt(pattern.length - 1) === '%' && pattern.indexOf('%') > pattern.length - 3) {\n pattern = pattern.substring(0, pattern.length - 1);\n return DataUtil.endsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n }\n else if (pattern.lastIndexOf('%') !== pattern.indexOf('%') && pattern.lastIndexOf('%') > pattern.indexOf('%') + 1) {\n pattern = pattern.substring(pattern.indexOf('%') + 1, pattern.lastIndexOf('%'));\n return input.indexOf(pattern) !== -1;\n }\n else {\n return input.indexOf(pattern) !== -1;\n }\n }\n else {\n return false;\n }\n };\n /**\n * To return the sorting function based on the string.\n *\n * @param {string} order\n * @hidden\n */\n DataUtil.fnSort = function (order) {\n order = order ? DataUtil.toLowerCase(order) : 'ascending';\n if (order === 'ascending') {\n return this.fnAscending;\n }\n return this.fnDescending;\n };\n /**\n * Comparer function which is used to sort the data in ascending order.\n *\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnAscending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return -1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y);\n }\n if (x === null || x === undefined) {\n return 1;\n }\n return x - y;\n };\n /**\n * Comparer function which is used to sort the data in descending order.\n *\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnDescending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return 1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y) * -1;\n }\n if (x === null || x === undefined) {\n return -1;\n }\n return y - x;\n };\n DataUtil.extractFields = function (obj, fields) {\n var newObj = {};\n for (var i = 0; i < fields.length; i++) {\n newObj = this.setValue(fields[i], this.getObject(fields[i], obj), newObj);\n }\n return newObj;\n };\n /**\n * Select objects by given fields from jsonArray.\n *\n * @param {Object[]} jsonArray\n * @param {string[]} fields\n */\n DataUtil.select = function (jsonArray, fields) {\n var newData = [];\n for (var i = 0; i < jsonArray.length; i++) {\n newData.push(this.extractFields(jsonArray[i], fields));\n }\n return newData;\n };\n /**\n * Group the input data based on the field name.\n * It also performs aggregation of the grouped records based on the aggregates paramater.\n *\n * @param {Object[]} jsonArray\n * @param {string} field?\n * @param {Object[]} agg?\n * @param {number} level?\n * @param {Object[]} groupDs?\n * @param field\n * @param aggregates\n * @param level\n * @param groupDs\n * @param format\n * @param isLazyLoad\n */\n DataUtil.group = function (jsonArray, field, aggregates, level, groupDs, format, isLazyLoad) {\n level = level || 1;\n var jsonData = jsonArray;\n var guid = 'GroupGuid';\n if (jsonData.GroupGuid === consts[guid]) {\n var _loop_1 = function (j) {\n if (!isNullOrUndefined(groupDs)) {\n var indx = -1;\n var temp = groupDs.filter(function (e) { return e.key === jsonData[j].key; });\n indx = groupDs.indexOf(temp[0]);\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, groupDs[indx].items, format, isLazyLoad);\n jsonData[j].count = groupDs[indx].count;\n }\n else {\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, null, format, isLazyLoad);\n jsonData[j].count = jsonData[j].items.length;\n }\n };\n var this_1 = this;\n for (var j = 0; j < jsonData.length; j++) {\n _loop_1(j);\n }\n jsonData.childLevels += 1;\n return jsonData;\n }\n var grouped = {};\n var groupedArray = [];\n groupedArray.GroupGuid = consts[guid];\n groupedArray.level = level;\n groupedArray.childLevels = 0;\n groupedArray.records = jsonData;\n var _loop_2 = function (i) {\n var val = this_2.getVal(jsonData, i, field);\n if (!isNullOrUndefined(format)) {\n val = format(val, field);\n }\n if (!grouped[val]) {\n grouped[val] = {\n key: val,\n count: 0,\n items: [],\n aggregates: {},\n field: field\n };\n groupedArray.push(grouped[val]);\n if (!isNullOrUndefined(groupDs)) {\n var tempObj = groupDs.filter(function (e) { return e.key === grouped[val].key; });\n grouped[val].count = tempObj[0].count;\n }\n }\n grouped[val].count = !isNullOrUndefined(groupDs) ? grouped[val].count : grouped[val].count += 1;\n if (!isLazyLoad || (isLazyLoad && aggregates.length)) {\n grouped[val].items.push(jsonData[i]);\n }\n };\n var this_2 = this;\n for (var i = 0; i < jsonData.length; i++) {\n _loop_2(i);\n }\n if (aggregates && aggregates.length) {\n var _loop_3 = function (i) {\n var res = {};\n var fn = void 0;\n var aggs = aggregates;\n for (var j = 0; j < aggregates.length; j++) {\n fn = DataUtil.aggregates[aggregates[j].type];\n if (!isNullOrUndefined(groupDs)) {\n var temp = groupDs.filter(function (e) { return e.key === groupedArray[i].key; });\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(temp[0].items, aggs[j].field);\n }\n }\n else {\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(groupedArray[i].items, aggs[j].field);\n }\n }\n }\n groupedArray[i].aggregates = res;\n };\n for (var i = 0; i < groupedArray.length; i++) {\n _loop_3(i);\n }\n }\n if (isLazyLoad && groupedArray.length && aggregates.length) {\n for (var i = 0; i < groupedArray.length; i++) {\n groupedArray[i].items = [];\n }\n }\n return jsonData.length && groupedArray || jsonData;\n };\n /**\n * It is used to categorize the multiple items based on a specific field in jsonArray.\n * The hierarchical queries are commonly required when you use foreign key binding.\n *\n * @param {string} fKey\n * @param {string} from\n * @param {Object[]} source\n * @param {Group} lookup?\n * @param {string} pKey?\n * @param lookup\n * @param pKey\n * @hidden\n */\n DataUtil.buildHierarchy = function (fKey, from, source, lookup, pKey) {\n var i;\n var grp = {};\n var temp;\n if (lookup.result) {\n lookup = lookup.result;\n }\n if (lookup.GroupGuid) {\n this.throwError('DataManager: Do not have support Grouping in hierarchy');\n }\n for (i = 0; i < lookup.length; i++) {\n var fKeyData = this.getObject(fKey, lookup[i]);\n temp = grp[fKeyData] || (grp[fKeyData] = []);\n temp.push(lookup[i]);\n }\n for (i = 0; i < source.length; i++) {\n var fKeyData = this.getObject(pKey || fKey, source[i]);\n source[i][from] = grp[fKeyData];\n }\n };\n /**\n * The method used to get the field names which started with specified characters.\n *\n * @param {Object} obj\n * @param {string[]} fields?\n * @param {string} prefix?\n * @param fields\n * @param prefix\n * @hidden\n */\n DataUtil.getFieldList = function (obj, fields, prefix) {\n if (prefix === undefined) {\n prefix = '';\n }\n if (fields === undefined || fields === null) {\n return this.getFieldList(obj, [], prefix);\n }\n var copyObj = obj;\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (typeof copyObj[prop] === 'object' && !(copyObj[prop] instanceof Array)) {\n this.getFieldList(copyObj[prop], fields, prefix + prop + '.');\n }\n else {\n fields.push(prefix + prop);\n }\n }\n return fields;\n };\n /**\n * Gets the value of the property in the given object.\n * The complex object can be accessed by providing the field names concatenated with dot(.).\n *\n * @param {string} nameSpace - The name of the property to be accessed.\n * @param {Object} from - Defines the source object.\n */\n DataUtil.getObject = function (nameSpace, from) {\n if (!nameSpace) {\n return from;\n }\n if (!from) {\n return undefined;\n }\n if (nameSpace.indexOf('.') === -1) {\n var lowerCaseNameSpace = nameSpace.charAt(0).toLowerCase() + nameSpace.slice(1);\n var upperCaseNameSpace = nameSpace.charAt(0).toUpperCase() + nameSpace.slice(1);\n if (!isNullOrUndefined(from[nameSpace])) {\n return from[nameSpace];\n }\n else {\n if (!isNullOrUndefined(from[lowerCaseNameSpace])) {\n return from[lowerCaseNameSpace];\n }\n else if (!isNullOrUndefined(from[upperCaseNameSpace])) {\n return from[upperCaseNameSpace];\n }\n else {\n return null;\n }\n }\n }\n var value = from;\n var splits = nameSpace.split('.');\n for (var i = 0; i < splits.length; i++) {\n if (value == null) {\n break;\n }\n value = value[splits[i]];\n if (value === undefined) {\n var casing = splits[i].charAt(0).toUpperCase() + splits[i].slice(1);\n value = from[casing] || from[casing.charAt(0).toLowerCase() + casing.slice(1)] || null;\n }\n from = value;\n }\n return value;\n };\n /**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object.\n * @param {Object} value - Value that you need to set.\n * @param {Object} obj - Object to get the inner object value.\n * @return { [key: string]: Object; } | Object\n * @hidden\n */\n DataUtil.setValue = function (nameSpace, value, obj) {\n var keys = nameSpace.toString().split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? undefined : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n };\n /**\n * Sort the given data based on the field and comparer.\n *\n * @param {Object[]} ds - Defines the input data.\n * @param {string} field - Defines the field to be sorted.\n * @param {Function} comparer - Defines the comparer function used to sort the records.\n */\n DataUtil.sort = function (ds, field, comparer) {\n if (ds.length <= 1) {\n return ds;\n }\n var middle = parseInt((ds.length / 2).toString(), 10);\n var left = ds.slice(0, middle);\n var right = ds.slice(middle);\n left = this.sort(left, field, comparer);\n right = this.sort(right, field, comparer);\n return this.merge(left, right, field, comparer);\n };\n DataUtil.ignoreDiacritics = function (value) {\n if (typeof value !== 'string') {\n return value;\n }\n var result = value.split('');\n var newValue = result.map(function (temp) { return temp in DataUtil.diacritics ? DataUtil.diacritics[temp] : temp; });\n return newValue.join('');\n };\n DataUtil.merge = function (left, right, fieldName, comparer) {\n var result = [];\n var current;\n while (left.length > 0 || right.length > 0) {\n if (left.length > 0 && right.length > 0) {\n if (comparer) {\n current = comparer(this.getVal(left, 0, fieldName), this.getVal(right, 0, fieldName), left[0], right[0]) <= 0 ? left : right;\n }\n else {\n current = left[0][fieldName] < left[0][fieldName] ? left : right;\n }\n }\n else {\n current = left.length > 0 ? left : right;\n }\n result.push(current.shift());\n }\n return result;\n };\n DataUtil.getVal = function (array, index, field) {\n return field ? this.getObject(field, array[index]) : array[index];\n };\n DataUtil.toLowerCase = function (val) {\n return val ? typeof val === 'string' ? val.toLowerCase() : val.toString() : (val === 0 || val === false) ? val.toString() : '';\n };\n /**\n * To perform the filter operation with specified adaptor and returns the result.\n *\n * @param {Object} adaptor\n * @param {string} fnName\n * @param {Object} param1?\n * @param {Object} param2?\n * @param param1\n * @param param2\n * @hidden\n */\n DataUtil.callAdaptorFunction = function (adaptor, fnName, param1, param2) {\n if (fnName in adaptor) {\n var res = adaptor[fnName](param1, param2);\n if (!isNullOrUndefined(res)) {\n param1 = res;\n }\n }\n return param1;\n };\n DataUtil.getAddParams = function (adp, dm, query) {\n var req = {};\n DataUtil.callAdaptorFunction(adp, 'addParams', {\n dm: dm,\n query: query,\n params: query.params,\n reqParams: req\n });\n return req;\n };\n /**\n * Checks wheather the given input is a plain object or not.\n *\n * @param {Object|Object[]} obj\n */\n DataUtil.isPlainObject = function (obj) {\n return (!!obj) && (obj.constructor === Object);\n };\n /**\n * Returns true when the browser cross origin request.\n */\n DataUtil.isCors = function () {\n var xhr = null;\n var request = 'XMLHttpRequest';\n try {\n xhr = new window[request]();\n }\n catch (e) {\n // No exception handling\n }\n return !!xhr && ('withCredentials' in xhr);\n };\n /**\n * Generate random GUID value which will be prefixed with the given value.\n *\n * @param {string} prefix\n */\n DataUtil.getGuid = function (prefix) {\n var hexs = '0123456789abcdef';\n var rand;\n return (prefix || '') + '00000000-0000-4000-0000-000000000000'.replace(/0/g, function (val, i) {\n if ('crypto' in window && 'getRandomValues' in crypto) {\n var arr = new Uint8Array(1);\n window.crypto.getRandomValues(arr);\n rand = arr[0] % 16 | 0;\n }\n else {\n rand = Math.random() * 16 | 0;\n }\n return hexs[i === 19 ? rand & 0x3 | 0x8 : rand];\n });\n };\n /**\n * Checks wheather the given value is null or not.\n *\n * @param {string|Object} val\n * @returns boolean\n */\n DataUtil.isNull = function (val) {\n return val === undefined || val === null;\n };\n /**\n * To get the required items from collection of objects.\n *\n * @param {Object[]} array\n * @param {string} field\n * @param {Function} comparer\n * @returns Object\n * @hidden\n */\n DataUtil.getItemFromComparer = function (array, field, comparer) {\n var keyVal;\n var current;\n var key;\n var i = 0;\n var castRequired = typeof DataUtil.getVal(array, 0, field) === 'string';\n if (array.length) {\n while (isNullOrUndefined(keyVal) && i < array.length) {\n keyVal = DataUtil.getVal(array, i, field);\n key = array[i++];\n }\n }\n for (; i < array.length; i++) {\n current = DataUtil.getVal(array, i, field);\n if (isNullOrUndefined(current)) {\n continue;\n }\n if (castRequired) {\n keyVal = +keyVal;\n current = +current;\n }\n if (comparer(keyVal, current) > 0) {\n keyVal = current;\n key = array[i];\n }\n }\n return key;\n };\n /**\n * To get distinct values of Array or Array of Objects.\n *\n * @param {Object[]} json\n * @param {string} field\n * @param fieldName\n * @param {boolean} requiresCompleteRecord\n * @returns Object[]\n * * distinct array of objects is return when requiresCompleteRecord set as true.\n * @hidden\n */\n DataUtil.distinct = function (json, fieldName, requiresCompleteRecord) {\n requiresCompleteRecord = isNullOrUndefined(requiresCompleteRecord) ? false : requiresCompleteRecord;\n var result = [];\n var val;\n var tmp = {};\n json.forEach(function (data, index) {\n val = typeof (json[index]) === 'object' ? DataUtil.getVal(json, index, fieldName) : json[index];\n if (!(val in tmp)) {\n result.push(!requiresCompleteRecord ? val : json[index]);\n tmp[val] = 1;\n }\n });\n return result;\n };\n /**\n * Process the given records based on the datamanager string.\n *\n * @param {string} datamanager\n * @param dm\n * @param {Object[]} records\n */\n DataUtil.processData = function (dm, records) {\n var query = this.prepareQuery(dm);\n var sampledata = new DataManager(records);\n if (dm.requiresCounts) {\n query.requiresCount();\n }\n /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n var result = sampledata.executeLocal(query);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n var returnValue = {\n result: dm.requiresCounts ? result.result : result,\n count: result.count,\n aggregates: JSON.stringify(result.aggregates)\n };\n return dm.requiresCounts ? returnValue : result;\n };\n DataUtil.prepareQuery = function (dm) {\n var _this = this;\n var query = new Query();\n if (dm.select) {\n query.select(dm.select);\n }\n if (dm.where) {\n var where = DataUtil.parse.parseJson(dm.where);\n where.filter(function (pred) {\n if (isNullOrUndefined(pred.condition)) {\n query.where(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent);\n }\n else {\n var predicateList = [];\n if (pred.field) {\n predicateList.push(new Predicate(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent));\n }\n else {\n predicateList = predicateList.concat(_this.getPredicate(pred.predicates));\n }\n if (pred.condition === 'or') {\n query.where(Predicate.or(predicateList));\n }\n else if (pred.condition === 'and') {\n query.where(Predicate.and(predicateList));\n }\n }\n });\n }\n if (dm.search) {\n var search = DataUtil.parse.parseJson(dm.search);\n // tslint:disable-next-line:no-string-literal\n search.filter(function (e) { return query.search(e.key, e.fields, e['operator'], \n // tslint:disable-next-line:no-string-literal\n e['ignoreCase'], e['ignoreAccent']); });\n }\n if (dm.aggregates) {\n dm.aggregates.filter(function (e) { return query.aggregate(e.type, e.field); });\n }\n if (dm.sorted) {\n dm.sorted.filter(function (e) { return query.sortBy(e.name, e.direction); });\n }\n if (dm.skip) {\n query.skip(dm.skip);\n }\n if (dm.take) {\n query.take(dm.take);\n }\n if (dm.group) {\n dm.group.filter(function (grp) { return query.group(grp); });\n }\n return query;\n };\n DataUtil.getPredicate = function (pred) {\n var mainPred = [];\n for (var i = 0; i < pred.length; i++) {\n var e = pred[i];\n if (e.field) {\n mainPred.push(new Predicate(e.field, e.operator, e.value, e.ignoreCase, e.ignoreAccent));\n }\n else {\n var childPred = [];\n // tslint:disable-next-line:typedef\n var cpre = this.getPredicate(e.predicates);\n for (var _i = 0, _a = Object.keys(cpre); _i < _a.length; _i++) {\n var prop = _a[_i];\n childPred.push(cpre[prop]);\n }\n mainPred.push(e.condition === 'or' ? Predicate.or(childPred) : Predicate.and(childPred));\n }\n }\n return mainPred;\n };\n /**\n * Specifies the value which will be used to adjust the date value to server timezone.\n *\n * @default null\n */\n DataUtil.serverTimezoneOffset = null;\n /**\n * Species whether are not to be parsed with serverTimezoneOffset value.\n *\n * @hidden\n */\n DataUtil.timeZoneHandling = true;\n /**\n * Throw error with the given string as message.\n *\n * @param {string} er\n * @param error\n */\n DataUtil.throwError = function (error) {\n try {\n throw new Error(error);\n }\n catch (e) {\n // eslint-disable-next-line no-throw-literal\n throw e.message + '\\n' + e.stack;\n }\n };\n DataUtil.aggregates = {\n /**\n * Calculate sum of the given field in the data.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n sum: function (ds, field) {\n var result = 0;\n var val;\n var castRequired = typeof DataUtil.getVal(ds, 0, field) !== 'number';\n for (var i = 0; i < ds.length; i++) {\n val = DataUtil.getVal(ds, i, field);\n if (!isNaN(val) && val !== null) {\n if (castRequired) {\n val = +val;\n }\n result += val;\n }\n }\n return result;\n },\n /**\n * Calculate average value of the given field in the data.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n average: function (ds, field) {\n return DataUtil.aggregates.sum(ds, field) / ds.length;\n },\n /**\n * Returns the min value of the data based on the field.\n *\n * @param {Object[]} ds\n * @param {string|Function} field\n */\n min: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnAscending));\n },\n /**\n * Returns the max value of the data based on the field.\n *\n * @param {Object[]} ds\n * @param {string} field\n * @returns number\n */\n max: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnDescending));\n },\n /**\n * Returns the total number of true value present in the data based on the given boolean field name.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n truecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', true, true)).length;\n },\n /**\n * Returns the total number of false value present in the data based on the given boolean field name.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n falsecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', false, true)).length;\n },\n /**\n * Returns the length of the given data.\n *\n * @param {Object[]} ds\n * @param {string} field?\n * @param field\n * @returns number\n */\n count: function (ds, field) {\n return ds.length;\n }\n };\n /**\n * Specifies the Object with filter operators.\n */\n DataUtil.operatorSymbols = {\n '<': 'lessthan',\n '>': 'greaterthan',\n '<=': 'lessthanorequal',\n '>=': 'greaterthanorequal',\n '==': 'equal',\n '!=': 'notequal',\n '*=': 'contains',\n '$=': 'endswith',\n '^=': 'startswith'\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * * It will be used for date/number type filter query.\n */\n DataUtil.odBiOperator = {\n '<': ' lt ',\n '>': ' gt ',\n '<=': ' le ',\n '>=': ' ge ',\n '==': ' eq ',\n '!=': ' ne ',\n 'lessthan': ' lt ',\n 'lessthanorequal': ' le ',\n 'greaterthan': ' gt ',\n 'greaterthanorequal': ' ge ',\n 'equal': ' eq ',\n 'notequal': ' ne '\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odUniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'substringof',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'substringof',\n 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not substringof',\n 'wildcard': 'wildcard',\n 'like': 'like'\n };\n /**\n * Specifies the Object with filter operators which will be used for ODataV4 filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odv4UniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'contains',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'contains',\n 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not contains',\n 'wildcard': 'wildcard',\n 'like': 'like'\n };\n DataUtil.diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n };\n DataUtil.fnOperators = {\n /**\n * Returns true when the actual input is equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param {boolean} ignoreAccent?\n * @param ignoreCase\n * @param ignoreAccent\n */\n equal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) === DataUtil.toLowerCase(expected);\n }\n return actual === expected;\n },\n /**\n * Returns true when the actual input is not equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n notequal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n return !DataUtil.fnOperators.equal(actual, expected, ignoreCase);\n },\n /**\n * Returns true when the actual input is less than to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n lessthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) < DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual < expected;\n },\n /**\n * Returns true when the actual input is greater than to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n greaterthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) > DataUtil.toLowerCase(expected);\n }\n return actual > expected;\n },\n /**\n * Returns true when the actual input is less than or equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n lessthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) <= DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual <= expected;\n },\n /**\n * Returns true when the actual input is greater than or equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n greaterthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) >= DataUtil.toLowerCase(expected);\n }\n return actual >= expected;\n },\n /**\n * Returns true when the actual input contains the given string.\n *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n contains: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) !== -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) !== -1;\n },\n /**\n * Returns true when the actual input not contains the given string.\n *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n */\n doesnotcontain: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) === -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) === -1;\n },\n /**\n * Returns true when the given input value is not null.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotnull: function (actual) {\n return actual !== null && actual !== undefined;\n },\n /**\n * Returns true when the given input value is null.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnull: function (actual) {\n return actual === null || actual === undefined;\n },\n /**\n * Returns true when the actual input starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n startswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.startsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.startsWith(actual, expected);\n },\n /**\n * Returns true when the actual input not starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotstartwith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.notStartsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notStartsWith(actual, expected);\n },\n /**\n * Returns true when the actual input like with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n like: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.like(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.like(actual, expected);\n },\n /**\n * Returns true when the given input value is empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isempty: function (actual) {\n return actual === undefined || actual === '';\n },\n /**\n * Returns true when the given input value is not empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotempty: function (actual) {\n return actual !== undefined && actual !== '';\n },\n /**\n * Returns true when the actual input pattern(wildcard) matches with the given string.\n *\n * @param {string|Date} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n wildcard: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return (actual || typeof actual === 'boolean') && expected && typeof actual !== 'object' &&\n DataUtil.wildCard(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return (actual || typeof actual === 'boolean') && expected && DataUtil.wildCard(actual, expected);\n },\n /**\n * Returns true when the actual input ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n endswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.endsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.endsWith(actual, expected);\n },\n /**\n * Returns true when the actual input not ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotendwith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.notEndsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notEndsWith(actual, expected);\n },\n /**\n * It will return the filter operator based on the filter symbol.\n *\n * @param {string} operator\n * @hidden\n */\n processSymbols: function (operator) {\n var fnName = DataUtil.operatorSymbols[operator];\n if (fnName) {\n var fn = DataUtil.fnOperators[fnName];\n return fn;\n }\n return DataUtil.throwError('Query - Process Operator : Invalid operator');\n },\n /**\n * It will return the valid filter operator based on the specified operators.\n *\n * @param {string} operator\n * @hidden\n */\n processOperator: function (operator) {\n var fn = DataUtil.fnOperators[operator];\n if (fn) {\n return fn;\n }\n return DataUtil.fnOperators.processSymbols(operator);\n }\n };\n /**\n * To perform the parse operation on JSON data, like convert to string from JSON or convert to JSON from string.\n */\n DataUtil.parse = {\n /**\n * Parse the given string to the plain JavaScript object.\n *\n * @param {string|Object|Object[]} jsonText\n */\n parseJson: function (jsonText) {\n if (typeof jsonText === 'string') {\n jsonText = JSON.parse(jsonText, DataUtil.parse.jsonReviver);\n }\n else if (jsonText instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(jsonText);\n }\n else if (typeof jsonText === 'object' && jsonText !== null) {\n DataUtil.parse.iterateAndReviveJson(jsonText);\n }\n return jsonText;\n },\n /**\n * It will perform on array of values.\n *\n * @param {string[]|Object[]} array\n * @hidden\n */\n iterateAndReviveArray: function (array) {\n for (var i = 0; i < array.length; i++) {\n if (typeof array[i] === 'object' && array[i] !== null) {\n DataUtil.parse.iterateAndReviveJson(array[i]);\n // eslint-disable-next-line no-useless-escape\n }\n else if (typeof array[i] === 'string' && !/^[\\s]*\\[|^[\\s]*\\{(.)+:|\\\"/g.test(array[i])) {\n array[i] = DataUtil.parse.jsonReviver('', array[i]);\n }\n else {\n array[i] = DataUtil.parse.parseJson(array[i]);\n }\n }\n },\n /**\n * It will perform on JSON values\n *\n * @param {JSON} json\n * @hidden\n */\n iterateAndReviveJson: function (json) {\n var value;\n var keys = Object.keys(json);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var prop = keys_2[_i];\n if (DataUtil.startsWith(prop, '__')) {\n continue;\n }\n value = json[prop];\n if (typeof value === 'object') {\n if (value instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(value);\n }\n else if (value) {\n DataUtil.parse.iterateAndReviveJson(value);\n }\n }\n else {\n json[prop] = DataUtil.parse.jsonReviver(json[prop], value);\n }\n }\n },\n /**\n * It will perform on JSON values\n *\n * @param {string} field\n * @param {string|Date} value\n * @hidden\n */\n jsonReviver: function (field, value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n var offSet = DataUtil.timeZoneHandling ? DataUtil.serverTimezoneOffset : null;\n if (ms) {\n return DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), offSet, true);\n // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var isUTC = value.indexOf('Z') > -1 || value.indexOf('z') > -1;\n var arr = value.split(/[^0-9.]/);\n if (isUTC) {\n if (arr[5].indexOf('.') > -1) {\n var secondsMs = arr[5].split('.');\n arr[5] = secondsMs[0];\n arr[6] = new Date(value).getUTCMilliseconds().toString();\n }\n else {\n arr[6] = '00';\n }\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5] ? arr[5] : '00', 10), parseInt(arr[6], 10)), DataUtil.serverTimezoneOffset, false);\n }\n else {\n var utcFormat = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5] ? arr[5] : '00', 10));\n var hrs = parseInt(arr[6], 10);\n var mins = parseInt(arr[7], 10);\n if (isNaN(hrs) && isNaN(mins)) {\n return utcFormat;\n }\n if (value.indexOf('+') > -1) {\n utcFormat.setHours(utcFormat.getHours() - hrs, utcFormat.getMinutes() - mins);\n }\n else {\n utcFormat.setHours(utcFormat.getHours() + hrs, utcFormat.getMinutes() + mins);\n }\n value = DataUtil.dateParse\n .toTimeZone(utcFormat, DataUtil.serverTimezoneOffset, false);\n }\n if (DataUtil.serverTimezoneOffset == null) {\n value = DataUtil.dateParse.addSelfOffset(value);\n }\n }\n else if (/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) {\n var arr = value.split(/[^0-9.]/);\n return new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n }\n return value;\n },\n /**\n * Check wheather the given value is JSON or not.\n *\n * @param {Object[]} jsonData\n */\n isJson: function (jsonData) {\n if (typeof jsonData[0] === 'string') {\n return jsonData;\n }\n return DataUtil.parse.parseJson(jsonData);\n },\n /**\n * Checks wheather the given value is GUID or not.\n *\n * @param {string} value\n */\n isGuid: function (value) {\n // eslint-disable-next-line security/detect-unsafe-regex\n var regex = /[A-Fa-f0-9]{8}(?:-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12}/i;\n var match = regex.exec(value);\n return match != null;\n },\n /**\n * The method used to replace the value based on the type.\n *\n * @param {Object} value\n * @param {boolean} stringify\n * @hidden\n */\n replacer: function (value, stringify) {\n if (DataUtil.isPlainObject(value)) {\n return DataUtil.parse.jsonReplacer(value, stringify);\n }\n if (value instanceof Array) {\n return DataUtil.parse.arrayReplacer(value);\n }\n if (value instanceof Date) {\n return DataUtil.parse.jsonReplacer({ val: value }, stringify).val;\n }\n return value;\n },\n /**\n * It will replace the JSON value.\n *\n * @param {string} key\n * @param {Object} val\n * @param stringify\n * @hidden\n */\n jsonReplacer: function (val, stringify) {\n var value;\n var keys = Object.keys(val);\n for (var _i = 0, keys_3 = keys; _i < keys_3.length; _i++) {\n var prop = keys_3[_i];\n value = val[prop];\n if (!(value instanceof Date)) {\n continue;\n }\n var d = value;\n if (DataUtil.serverTimezoneOffset == null) {\n val[prop] = DataUtil.dateParse.toTimeZone(d, null).toJSON();\n }\n else {\n d = new Date(+d + DataUtil.serverTimezoneOffset * 3600000);\n val[prop] = DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(d), null).toJSON();\n }\n }\n return val;\n },\n /**\n * It will replace the Array of value.\n *\n * @param {string} key\n * @param {Object[]} val\n * @hidden\n */\n arrayReplacer: function (val) {\n for (var i = 0; i < val.length; i++) {\n if (DataUtil.isPlainObject(val[i])) {\n val[i] = DataUtil.parse.jsonReplacer(val[i]);\n }\n else if (val[i] instanceof Date) {\n val[i] = DataUtil.parse.jsonReplacer({ date: val[i] }).date;\n }\n }\n return val;\n },\n /**\n * It will replace the Date object with respective to UTC format value.\n *\n * @param {string} key\n * @param {any} value\n * @hidden\n */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n /* tslint:disable-next-line:no-any */\n jsonDateReplacer: function (key, value) {\n /* eslint-enable @typescript-eslint/no-explicit-any */\n if (key === 'value' && value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n if (ms) {\n value = DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), null, true);\n // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var arr = value.split(/[^0-9]/);\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), null, true);\n }\n }\n if (value instanceof Date) {\n value = DataUtil.dateParse.addSelfOffset(value);\n if (DataUtil.serverTimezoneOffset === null) {\n return DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(value), null).toJSON();\n }\n else {\n value = DataUtil.dateParse.toTimeZone(value, (((value.getTimezoneOffset() / 60) * 2)\n - DataUtil.serverTimezoneOffset), false);\n return value.toJSON();\n }\n }\n }\n return value;\n }\n };\n /**\n * @hidden\n */\n DataUtil.dateParse = {\n addSelfOffset: function (input) {\n return new Date(+input - (input.getTimezoneOffset() * 60000));\n },\n toUTC: function (input) {\n return new Date(+input + (input.getTimezoneOffset() * 60000));\n },\n toTimeZone: function (input, offset, utc) {\n if (offset === null) {\n return input;\n }\n var unix = utc ? DataUtil.dateParse.toUTC(input) : input;\n return new Date(+unix - (offset * 3600000));\n },\n toLocalTime: function (input) {\n var datefn = input;\n var timeZone = -datefn.getTimezoneOffset();\n var differenceString = timeZone >= 0 ? '+' : '-';\n var localtimefn = function (num) {\n var norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n };\n var val = datefn.getFullYear() + '-' + localtimefn(datefn.getMonth() + 1) + '-' + localtimefn(datefn.getDate()) +\n 'T' + localtimefn(datefn.getHours()) +\n ':' + localtimefn(datefn.getMinutes()) +\n ':' + localtimefn(datefn.getSeconds()) +\n differenceString + localtimefn(timeZone / 60) +\n ':' + localtimefn(timeZone % 60);\n return val;\n }\n };\n return DataUtil;\n}());\nexport { DataUtil };\n","/**\n * IncrementalSearch module file\n */\nvar queryString = '';\nvar prevString = '';\nvar matches = [];\nvar activeClass = 'e-active';\nvar prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content\n *\n * @param { number } keyCode - Specifies the key code which pressed on keyboard events.\n * @param { HTMLElement[]} items - Specifies an array of HTMLElement, from which matches find has done.\n * @param { number } selectedIndex - Specifies the selected item in list item, so that search will happen\n * after selected item otherwise it will do from initial.\n * @param { boolean } ignoreCase - Specifies the case consideration when search has done.\n * @param {string} elementId - Specifies the list element ID.\n * @returns {Element} Returns list item based on key code matches with list text content.\n */\nexport function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId) {\n queryString += String.fromCharCode(keyCode);\n setTimeout(function () {\n queryString = '';\n }, 1000);\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n }\n index = index + 1;\n return matches[index] ? matches[index] : matches[0];\n }\n else {\n var listItems = items;\n var strLength = queryString.length;\n var text = void 0;\n var item = void 0;\n selectedIndex = selectedIndex ? selectedIndex + 1 : 0;\n var i = selectedIndex;\n matches = [];\n do {\n if (i === listItems.length) {\n i = -1;\n }\n if (i === -1) {\n index = 0;\n }\n else {\n index = i;\n }\n item = listItems[index];\n text = ignoreCase ? item.innerText.toLowerCase() : item.innerText;\n if (text.substr(0, strLength) === queryString) {\n matches.push(listItems[index]);\n }\n i++;\n } while (i !== selectedIndex);\n prevString = queryString;\n prevElementId = elementId;\n return matches[0];\n }\n}\n/**\n * Search the list item based on given input value matches with search type.\n *\n * @param {string} inputVal - Specifies the given input value.\n * @param {HTMLElement[]} items - Specifies the list items.\n * @param {SearchType} searchType - Specifies the filter type.\n * @param {boolean} ignoreCase - Specifies the case sensitive option for search operation.\n * @returns {Element | number} Returns the search matched items.\n */\nexport function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type) {\n var listItems = items;\n ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;\n var itemData = { item: null, index: null };\n if (inputVal && inputVal.length) {\n var strLength = inputVal.length;\n var queryStr = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;\n queryStr = escapeCharRegExp(queryStr);\n var _loop_1 = function (i, itemsData) {\n var item = itemsData[i];\n var text = void 0;\n var filterValue;\n if (items && dataSource) {\n var checkField_1 = item;\n var fieldValue_1 = fields.text.split('.');\n dataSource.filter(function (data) {\n Array.prototype.slice.call(fieldValue_1).forEach(function (value) {\n /* eslint-disable security/detect-object-injection */\n if (type === 'object' && (!data.isHeader && checkField_1.textContent.toString().indexOf(data[value]) !== -1) && checkField_1.getAttribute('data-value') === data[fields.value].toString() || type === 'string' && checkField_1.textContent.toString().indexOf(data) !== -1) {\n filterValue = type === 'object' ? data[value] : data;\n }\n });\n });\n }\n text = dataSource && filterValue ? (ignoreCase ? filterValue.toLocaleLowerCase() : filterValue).replace(/^\\s+|\\s+$/g, '') : (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\n /* eslint-disable security/detect-non-literal-regexp */\n if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr) || (searchType === 'EndsWith' && text.substr(text.length - queryStr.length) === queryStr) || (searchType === 'Contains' && new RegExp(queryStr, \"g\").test(text))) {\n itemData.item = item;\n itemData.index = i;\n return { value: { item: item, index: i } };\n }\n };\n for (var i = 0, itemsData = listItems; i < itemsData.length; i++) {\n var state_1 = _loop_1(i, itemsData);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return itemData;\n /* eslint-enable security/detect-non-literal-regexp */\n }\n return itemData;\n}\n/* eslint-enable security/detect-object-injection */\nexport function escapeCharRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nexport function resetIncrementalSearchValues(elementId) {\n if (prevElementId === elementId) {\n prevElementId = '';\n prevString = '';\n queryString = '';\n matches = [];\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, addClass, append, Property, Event, L10n, compile } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend, removeClass, prepend, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, rippleEffect, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { select, selectAll } from '@syncfusion/ej2-base';\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\nexport var dropDownBaseClasses = {\n root: 'e-dropdownbase',\n rtl: 'e-rtl',\n content: 'e-content',\n selected: 'e-active',\n hover: 'e-hover',\n noData: 'e-nodata',\n fixedHead: 'e-fixed-head',\n focus: 'e-item-focus',\n li: 'e-list-item',\n group: 'e-list-group-item',\n disabled: 'e-disabled',\n grouping: 'e-dd-group'\n};\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nvar DISPLAYTEMPLATE_PROPERTY = 'DisplayTemplate';\nvar SPINNERTEMPLATE_PROPERTY = 'SpinnerTemplate';\nvar VALUETEMPLATE_PROPERTY = 'ValueTemplate';\nvar GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';\nvar NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';\nvar HIDE_GROUPLIST = 'e-hide-group-header';\n/**\n * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components\n */\nvar DropDownBase = /** @class */ (function (_super) {\n __extends(DropDownBase, _super);\n /**\n * * Constructor for DropDownBase class\n *\n * @param {DropDownBaseModel} options - Specifies the DropDownBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isPreventChange = false;\n _this.isDynamicDataChange = false;\n _this.addedNewItem = false;\n _this.isAddNewItemTemplate = false;\n _this.isRequesting = false;\n return _this;\n }\n DropDownBase.prototype.getPropObject = function (prop, newProp, oldProp) {\n var newProperty = new Object();\n var oldProperty = new Object();\n var propName = function (prop) {\n return prop;\n };\n newProperty[propName(prop)] = newProp[propName(prop)];\n oldProperty[propName(prop)] = oldProp[propName(prop)];\n var data = new Object();\n data.newProperty = newProperty;\n data.oldProperty = oldProperty;\n return data;\n };\n DropDownBase.prototype.getValueByText = function (text, ignoreCase, ignoreAccent) {\n var value = null;\n if (!isNullOrUndefined(this.listData)) {\n if (ignoreCase) {\n value = this.checkValueCase(text, true, ignoreAccent);\n }\n else {\n value = this.checkValueCase(text, false, ignoreAccent);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkValueCase = function (text, ignoreCase, ignoreAccent, isTextByValue) {\n var _this = this;\n var value = null;\n if (isTextByValue) {\n value = text;\n }\n var dataSource = this.listData;\n var fields = this.fields;\n var type = this.typeOfData(dataSource).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n if (!isNullOrUndefined(item)) {\n if (ignoreAccent) {\n value = this.checkingAccent(String(item), text, ignoreCase);\n }\n else {\n if (ignoreCase) {\n if (this.checkIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase, isTextByValue);\n }\n }\n }\n }\n }\n }\n else {\n if (ignoreCase) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && _this.checkIgnoreCase(getValue(fields.text, item).toString(), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n else {\n if (isTextByValue) {\n var compareValue_1 = null;\n compareValue_1 = value;\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) && itemValue.toString() === compareValue_1.toString()) {\n value = getValue(fields.text, item);\n }\n });\n }\n else {\n dataSource.filter(function (item) {\n if (_this.checkNonIgnoreCase(getValue(fields.text, item), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n }\n }\n return value;\n };\n DropDownBase.prototype.checkingAccent = function (item, text, ignoreCase) {\n var dataItem = DataUtil.ignoreDiacritics(String(item));\n var textItem = DataUtil.ignoreDiacritics(text.toString());\n var value = null;\n if (ignoreCase) {\n if (this.checkIgnoreCase(dataItem, textItem)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkIgnoreCase = function (item, text) {\n return String(item).toLowerCase() === text.toString().toLowerCase() ? true : false;\n };\n DropDownBase.prototype.checkNonIgnoreCase = function (item, text) {\n return String(item) === text.toString() ? true : false;\n };\n DropDownBase.prototype.getItemValue = function (dataItem, typedText, ignoreCase, isTextByValue) {\n var value = null;\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n if (isTextByValue) {\n value = dataItem.toString();\n }\n else {\n if (ignoreCase) {\n value = type === 'string' ? String(dataItem) : this.getFormattedValue(String(dataItem));\n }\n else {\n value = type === 'string' ? typedText : this.getFormattedValue(typedText);\n }\n }\n return value;\n };\n DropDownBase.prototype.templateCompiler = function (baseTemplate) {\n var checkTemplate = false;\n if (typeof baseTemplate !== 'function' && baseTemplate) {\n try {\n checkTemplate = (selectAll(baseTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownBase.prototype.l10nUpdate = function (actionFailure) {\n var ele = this.getModuleName() === 'listbox' ? this.ulElement : this.list;\n if (this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var compiledString = void 0;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n ele.innerHTML = '';\n var tempaltecheck = this.templateCompiler(template);\n if (typeof template !== 'function' && tempaltecheck) {\n compiledString = compile(select(template, document).innerHTML.trim());\n }\n else {\n compiledString = compile(template);\n }\n var templateName = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var noDataElement = void 0;\n if ((this.isReact) && typeof template === 'function') {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null);\n }\n else {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n }\n if (noDataElement && noDataElement.length > 0) {\n for (var i = 0; i < noDataElement.length; i++) {\n if (this.getModuleName() === 'listbox' && templateName === 'noRecordsTemplate') {\n if (noDataElement[i].nodeName === '#text') {\n var liElem = this.createElement('li');\n liElem.textContent = noDataElement[i].textContent;\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n ele.appendChild(liElem);\n }\n else {\n noDataElement[i].classList.add('e-list-nr-template');\n ele.appendChild(noDataElement[i]);\n }\n }\n else {\n ele.appendChild(noDataElement[i]);\n }\n }\n }\n this.renderReactTemplates();\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request failed' };\n var componentLocale = new L10n(this.getLocaleName(), {}, this.locale);\n if (componentLocale.getConstant('actionFailureTemplate') !== '' || componentLocale.getConstant('noRecordsTemplate') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' :\n this.getModuleName() === 'mention' ? 'mention' : 'dropdowns', l10nLocale, this.locale);\n }\n var content = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n var liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n }\n else {\n if (!isNullOrUndefined(ele)) {\n ele.innerHTML = content;\n }\n }\n }\n };\n DropDownBase.prototype.getLocaleName = function () {\n return 'drop-down-base';\n };\n DropDownBase.prototype.getTextByValue = function (value) {\n var text = this.checkValueCase(value, false, false, true);\n return text;\n };\n DropDownBase.prototype.getFormattedValue = function (value) {\n if (this.listData && this.listData.length) {\n var item = void 0;\n if (this.properties.allowCustomValue && this.properties.value && this.properties.value instanceof Array && this.properties.value.length > 0) {\n item = this.typeOfData(this.properties.value);\n }\n else {\n item = this.typeOfData(this.listData);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'number'\n || item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'boolean'\n || item.typeof === 'boolean') {\n return ((value === 'true') || ('' + value === 'true'));\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n *\n * @returns {void}\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (!isNullOrUndefined(this.enableRtlElements)) {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n if (this.enableRtl) {\n addClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n else {\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n }\n };\n /**\n * Initialize the Component.\n *\n * @returns {void}\n */\n DropDownBase.prototype.initialize = function (e) {\n this.bindEvent = true;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE_PROPERTY;\n if (this.element.tagName === 'UL') {\n var jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({ fields: { text: 'text', value: 'text' } }, true);\n this.resetList(jsonElement, this.fields);\n }\n else if (this.element.tagName === 'SELECT') {\n var dataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n }\n else if (this.isDynamicDataChange) {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query, e);\n }\n };\n /**\n * Get the properties to be maintained in persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @param {string} value - Specifies the attribute values to add on the input element.\n * @returns {void}\n */\n DropDownBase.prototype.updateDataAttribute = function (value) {\n var invalidAttr = ['class', 'style', 'id', 'type', 'aria-expanded', 'aria-autocomplete', 'aria-readonly'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownBase.prototype.renderItemsBySelect = function () {\n var element = this.element;\n var fields = { value: 'value', text: 'text' };\n var jsonElement = [];\n var group = element.querySelectorAll('select>optgroup');\n var option = element.querySelectorAll('select>option');\n this.getJSONfromOption(jsonElement, option, fields);\n if (group.length) {\n for (var i = 0; i < group.length; i++) {\n var item = group[i];\n var optionGroup = {};\n optionGroup[fields.text] = item.label;\n optionGroup.isHeader = true;\n var child = item.querySelectorAll('option');\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n element.querySelectorAll('select>option');\n }\n this.updateFields(fields.text, fields.value, this.fields.groupBy, this.fields.htmlAttributes, this.fields.iconCss);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss) {\n var field = {\n 'fields': {\n text: text,\n value: value,\n groupBy: !isNullOrUndefined(groupBy) ? groupBy : this.fields && this.fields.groupBy,\n htmlAttributes: !isNullOrUndefined(htmlAttributes) ? htmlAttributes : this.fields && this.fields.htmlAttributes,\n iconCss: !isNullOrUndefined(iconCss) ? iconCss : this.fields && this.fields.iconCss\n }\n };\n this.setProperties(field, true);\n };\n DropDownBase.prototype.getJSONfromOption = function (items, options, fields) {\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var option = options_1[_i];\n var json = {};\n json[fields.text] = option.innerText;\n json[fields.value] = !isNullOrUndefined(option.getAttribute(fields.value)) ?\n option.getAttribute(fields.value) : option.innerText;\n items.push(json);\n }\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.preRender = function () {\n // there is no event handler\n this.scrollTimer = -1;\n this.enableRtlElements = [];\n this.isRequested = false;\n this.isDataFetched = false;\n this.itemTemplateId = \"\" + this.element.id + ITEMTEMPLATE_PROPERTY;\n this.displayTemplateId = \"\" + this.element.id + DISPLAYTEMPLATE_PROPERTY;\n this.spinnerTemplateId = \"\" + this.element.id + SPINNERTEMPLATE_PROPERTY;\n this.valueTemplateId = \"\" + this.element.id + VALUETEMPLATE_PROPERTY;\n this.groupTemplateId = \"\" + this.element.id + GROUPTEMPLATE_PROPERTY;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE_PROPERTY;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE_PROPERTY;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE_PROPERTY;\n };\n /**\n * Creates the list items of DropDownBase component.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.setListData = function (dataSource, fields, query, event) {\n var _this = this;\n fields = fields ? fields : this.fields;\n var ulElement;\n this.isActive = true;\n var eventArgs = { cancel: false, data: dataSource, query: query };\n this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;\n if (!this.isRequesting) {\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.isRequesting = true;\n _this.showSpinner();\n if (dataSource instanceof DataManager) {\n _this.isRequested = true;\n if (_this.isDataFetched) {\n _this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(_this.getQuery(eventArgs.query)).then(function (e) {\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n _this.isRequesting = false;\n var listItems = e.result;\n if (listItems.length === 0) {\n _this.isDataFetched = true;\n }\n ulElement = _this.renderItems(listItems, fields);\n _this.onActionComplete(ulElement, listItems, e);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.isRequested = false;\n _this.bindChildItems(listItems, ulElement, fields, e);\n }\n });\n }).catch(function (e) {\n _this.isRequested = false;\n _this.isRequesting = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n }\n else {\n var dataManager = new DataManager(eventArgs.data);\n var listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n var localDataArgs = { cancel: false, result: listItems };\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', localDataArgs, function (localDataArgs) {\n if (!localDataArgs.cancel) {\n _this.isRequesting = false;\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result, event);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n setTimeout(function () {\n if (_this.getModuleName() === 'multiselect' && _this.itemTemplate != null && (ulElement.childElementCount > 0 && (ulElement.children[0].childElementCount > 0 || (_this.fields.groupBy && ulElement.children[1] && ulElement.children[1].childElementCount > 0)))) {\n _this.updateDataList();\n }\n });\n }\n });\n }\n }\n });\n }\n };\n DropDownBase.prototype.bindChildItems = function (listItems, ulElement, fields, e) {\n var _this = this;\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(function () {\n var childNode = _this.remainingItems(_this.sortedData, fields);\n append(childNode, ulElement);\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.updateListValues();\n _this.raiseDataBound(listItems, e);\n }, 0);\n }\n else {\n this.raiseDataBound(listItems, e);\n }\n };\n DropDownBase.prototype.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n if (!isNullOrUndefined(this.list)) {\n addClass([this.list], dropDownBaseClasses.noData);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n this.listData = list;\n if (this.getModuleName() !== 'listbox') {\n ulElement.setAttribute('tabindex', '0');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n if (this.getModuleName() === 'multiselect' && this.properties.allowCustomValue && this.fields.groupBy) {\n for (var i = 0; i < ulElement.childElementCount; i++) {\n if (ulElement.children[i].classList.contains('e-list-group-item')) {\n if (isNullOrUndefined(ulElement.children[i].innerHTML) || ulElement.children[i].innerHTML == \"\") {\n addClass([ulElement.children[i]], HIDE_GROUPLIST);\n }\n }\n }\n }\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.appendChild(ulElement);\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.postRender(this.list, list, this.bindEvent);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var focusItem = listElement.querySelector('.' + dropDownBaseClasses.li);\n var selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\n if (list.length <= 0) {\n this.l10nUpdate();\n addClass([listElement], dropDownBaseClasses.noData);\n }\n else {\n listElement.classList.remove(dropDownBaseClasses.noData);\n }\n };\n /**\n * Get the query to do the data operation before list item generation.\n *\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {Query} Returns the query to do the data query operation.\n */\n DropDownBase.prototype.getQuery = function (query) {\n return query ? query : this.query ? this.query : new Query();\n };\n /**\n * To render the template content for group header element.\n *\n * @param {HTMLElement} listEle - Specifies the group list elements.\n * @returns {void}\n */\n DropDownBase.prototype.renderGroupTemplate = function (listEle) {\n if (this.fields.groupBy !== null && this.dataSource || this.element.querySelector('.' + dropDownBaseClasses.group)) {\n var dataSource = this.dataSource;\n var option = { groupTemplateID: this.groupTemplateId, isStringTemplate: this.isStringTemplate };\n var headerItems = listEle.querySelectorAll('.' + dropDownBaseClasses.group);\n var groupcheck = this.templateCompiler(this.groupTemplate);\n if (typeof this.groupTemplate !== 'function' && groupcheck) {\n var groupValue = select(this.groupTemplate, document).innerHTML.trim();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n this.renderReactTemplates();\n }\n };\n /**\n * To create the ul li list items\n *\n * @param {object []} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the ul li list items.\n */\n DropDownBase.prototype.createListItems = function (dataSource, fields) {\n if (dataSource && fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var options = this.listOption(dataSource, fields);\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, (this.getModuleName() === 'autocomplete') ? spliceData : dataSource, options, true, this);\n };\n DropDownBase.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldValues = !isNullOrUndefined(fields.properties) ?\n fields.properties : fields;\n var options = (fields.text !== null || fields.value !== null) ? {\n fields: fieldValues,\n showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n return extend({}, options, fields, true);\n };\n DropDownBase.prototype.setFloatingHeader = function (e) {\n if (!isNullOrUndefined(this.list) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!isNullOrUndefined(this.list) && !this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && !isNullOrUndefined(this.list)) {\n prepend([this.fixedHeaderElement], this.list);\n }\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n }\n };\n DropDownBase.prototype.scrollStop = function (e) {\n var target = !isNullOrUndefined(e) ? e.target : this.list;\n var liHeight = parseInt(getComputedStyle(this.getValidLi(), null).getPropertyValue('height'), 10);\n var topIndex = Math.round(target.scrollTop / liHeight);\n var liCollections = this.list.querySelectorAll('li' + ':not(.e-hide-listitem)');\n for (var i = topIndex; i > -1; i--) {\n if (!isNullOrUndefined(liCollections[i]) && liCollections[i].classList.contains(dropDownBaseClasses.group)) {\n var currentLi = liCollections[i];\n this.fixedHeaderElement.innerHTML = currentLi.innerHTML;\n this.fixedHeaderElement.style.top = target.scrollTop + 'px';\n this.fixedHeaderElement.style.display = 'block';\n break;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n }\n }\n };\n DropDownBase.prototype.getValidLi = function () {\n return this.liCollections[0];\n };\n /**\n * To render the list items\n *\n * @param {object[]} listData - Specifies the list of array of data.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the list items.\n */\n DropDownBase.prototype.renderItems = function (listData, fields) {\n var ulElement;\n if (this.itemTemplate && listData) {\n var dataSource = listData;\n if (dataSource && fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n this.sortedData = dataSource;\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);\n }\n else {\n ulElement = this.createListItems(listData, fields);\n }\n return ulElement;\n };\n DropDownBase.prototype.templateListItem = function (dataSource, fields) {\n var option = this.listOption(dataSource, fields);\n option.templateID = this.itemTemplateId;\n option.isStringTemplate = this.isStringTemplate;\n var itemcheck = this.templateCompiler(this.itemTemplate);\n if (typeof this.itemTemplate !== 'function' && itemcheck) {\n var itemValue = select(this.itemTemplate, document).innerHTML.trim();\n return ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option, this);\n }\n else {\n return ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option, this);\n }\n };\n DropDownBase.prototype.typeOfData = function (items) {\n var item = { typeof: null, item: null };\n for (var i = 0; (!isNullOrUndefined(items) && i < items.length); i++) {\n if (!isNullOrUndefined(items[i])) {\n var listDataType = typeof (items[i]) === 'string' ||\n typeof (items[i]) === 'number' || typeof (items[i]) === 'boolean';\n var isNullData = listDataType ? isNullOrUndefined(items[i]) :\n isNullOrUndefined(getValue((this.fields.value ? this.fields.value : 'value'), items[i]));\n if (!isNullData) {\n return item = { typeof: typeof items[i], item: items[i] };\n }\n }\n }\n return item;\n };\n DropDownBase.prototype.setFixedHeader = function () {\n if (!isNullOrUndefined(this.list)) {\n this.list.parentElement.style.display = 'block';\n }\n var borderWidth = 0;\n if (this.list && this.list.parentElement) {\n borderWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-width'), 10);\n /*Shorthand property not working in Firefox for getComputedStyle method.\n Refer bug report https://bugzilla.mozilla.org/show_bug.cgi?id=137688\n Refer alternate solution https://stackoverflow.com/a/41696234/9133493*/\n if (isNaN(borderWidth)) {\n var borderTopWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-top-width'), 10);\n var borderBottomWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-bottom-width'), 10);\n var borderLeftWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-left-width'), 10);\n var borderRightWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-right-width'), 10);\n borderWidth = (borderTopWidth + borderBottomWidth + borderLeftWidth + borderRightWidth);\n }\n }\n if (!isNullOrUndefined(this.liCollections)) {\n var liWidth = this.getValidLi().offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\n }\n setStyleAttribute(this.fixedHeaderElement, { zIndex: 10 });\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group + ':not(.e-hide-listitem)');\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n };\n DropDownBase.prototype.getSortedDataSource = function (dataSource) {\n if (dataSource && this.sortOrder !== 'None') {\n var textField = this.fields.text ? this.fields.text : 'text';\n if (this.typeOfData(dataSource).typeof === 'string' || this.typeOfData(dataSource).typeof === 'number'\n || this.typeOfData(dataSource).typeof === 'boolean') {\n textField = '';\n }\n dataSource = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, textField));\n }\n return dataSource;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValue = function (value) {\n var index;\n var listItems = this.getItems();\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DropDownBase.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n if (element) {\n element.dispatchEvent(evt);\n }\n };\n /**\n * To set the current fields\n *\n * @returns {void}\n */\n DropDownBase.prototype.setFields = function () {\n if (this.fields.value && !this.fields.text) {\n this.updateFields(this.fields.value, this.fields.value);\n }\n else if (!this.fields.value && this.fields.text) {\n this.updateFields(this.fields.text, this.fields.text);\n }\n else if (!this.fields.value && !this.fields.text) {\n this.updateFields('text', 'text');\n }\n };\n /**\n * reset the items list.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.resetList = function (dataSource, fields, query, e) {\n if (this.list) {\n if ((this.element.tagName === 'SELECT' && this.element.options.length > 0)\n || (this.element.tagName === 'UL' && this.element.childNodes.length > 0)) {\n var data = dataSource instanceof Array ? (dataSource.length > 0)\n : !isNullOrUndefined(dataSource);\n if (!data && this.selectData && this.selectData.length > 0) {\n dataSource = this.selectData;\n }\n }\n dataSource = this.getModuleName() === 'combobox' && this.selectData && dataSource instanceof Array && dataSource.length < this.selectData.length && this.addedNewItem ? this.selectData : dataSource;\n this.addedNewItem = false;\n this.setListData(dataSource, fields, query, e);\n }\n };\n DropDownBase.prototype.updateSelectElementData = function (isFiltering) {\n if (isFiltering && isNullOrUndefined(this.selectData) && this.listData && this.listData.length > 0) {\n this.selectData = this.listData;\n }\n };\n DropDownBase.prototype.updateSelection = function () {\n // This is for after added the item, need to update the selected index values.\n };\n DropDownBase.prototype.renderList = function () {\n // This is for render the list items.\n this.render();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateDataSource = function (props) {\n this.resetList(this.dataSource);\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp) {\n this.isDataFetched = false;\n var updateData = {};\n for (var j = 0; props.length > j; j++) {\n if (newProp[props[j]] && props[j] === 'fields') {\n this.setFields();\n updateData[props[j]] = newProp[props[j]];\n }\n else if (newProp[props[j]]) {\n updateData[props[j]] = newProp[props[j]];\n }\n }\n if (Object.keys(updateData).length > 0) {\n if (Object.keys(updateData).indexOf('dataSource') === -1) {\n updateData.dataSource = this.dataSource;\n }\n this.updateDataSource(updateData);\n }\n };\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {DropDownBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownBaseModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownbase') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n this.setUpdateInitial(['sortOrder', 'itemTemplate'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'sortOrder':\n case 'dataSource':\n case 'itemTemplate':\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'groupTemplate':\n this.renderGroupTemplate(this.list);\n if (this.ulElement && this.fixedHeaderElement) {\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n break;\n case 'locale':\n if (this.list && (!isNullOrUndefined(this.liCollections) && this.liCollections.length === 0)) {\n this.l10nUpdate();\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n }\n }\n };\n /**\n * Build and render the component\n *\n * @param {boolean} isEmptyData - Specifies the component to initialize with list data or not.\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.render = function (e, isEmptyData) {\n if (this.getModuleName() === 'listbox') {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n }\n else {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content });\n }\n this.list.classList.add(dropDownBaseClasses.root);\n this.setFields();\n var rippleModel = { duration: 300, selector: '.' + dropDownBaseClasses.li };\n this.rippleFun = rippleEffect(this.list, rippleModel);\n var group = this.element.querySelector('select>optgroup');\n if ((this.fields.groupBy || !isNullOrUndefined(group)) && !this.isGroupChecking) {\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (this.getModuleName() === 'dropdownbase') {\n if (this.element.getAttribute('tabindex')) {\n this.list.setAttribute('tabindex', this.element.getAttribute('tabindex'));\n }\n removeClass([this.element], dropDownBaseClasses.root);\n this.element.style.display = 'none';\n var wrapperElement = this.createElement('div');\n this.element.parentElement.insertBefore(wrapperElement, this.element);\n wrapperElement.appendChild(this.element);\n wrapperElement.appendChild(this.list);\n }\n this.setEnableRtl();\n if (!isEmptyData) {\n this.initialize(e);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n\n */\n DropDownBase.prototype.addItem = function (items, itemIndex) {\n if (!this.list || (this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox')) {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n var newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n }\n else {\n itemIndex = newList.indexOf(items);\n }\n }\n var itemsCount = this.getItems().length;\n var selectedItemValue = this.list.querySelector('.' + dropDownBaseClasses.selected);\n items = (items instanceof Array ? items : [items]);\n var index;\n index = (isNullOrUndefined(itemIndex) || itemIndex < 0 || itemIndex > itemsCount - 1) ? itemsCount : itemIndex;\n var fields = this.fields;\n if (items && fields.groupBy) {\n items = ListBase.groupDataSource(items, fields.properties);\n }\n var liCollections = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var isHeader = item.isHeader;\n var li = this.createElement('li', { className: isHeader ? dropDownBaseClasses.group : dropDownBaseClasses.li, id: 'option-add-' + i });\n var itemText = item instanceof Object ? getValue(fields.text, item) : item;\n if (isHeader) {\n li.innerText = itemText;\n }\n if (this.itemTemplate && !isHeader) {\n var itemCheck = this.templateCompiler(this.itemTemplate);\n var compiledString = typeof this.itemTemplate !== 'function' &&\n itemCheck ? compile(select(this.itemTemplate, document).innerHTML.trim()) : compile(this.itemTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var addItemTemplate = compiledString(item, this, 'itemTemplate', this.itemTemplateId, this.isStringTemplate, null, li);\n if (addItemTemplate) {\n append(addItemTemplate, li);\n }\n }\n else if (!isHeader) {\n li.appendChild(document.createTextNode(itemText));\n }\n li.setAttribute('data-value', item instanceof Object ? getValue(fields.value, item) : item);\n li.setAttribute('role', 'option');\n this.notify('addItem', { module: 'CheckBoxSelection', item: li });\n liCollections.push(li);\n this.listData.push(item);\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n this.updateActionCompleteData(li, item, index);\n //Listbox event\n this.trigger('beforeItemRender', { element: li, item: item });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n this.isAddNewItemTemplate = true;\n if (!isNullOrUndefined(this.ulElement)) {\n this.list.appendChild(this.ulElement);\n }\n }\n this.liCollections = liCollections;\n if (!isNullOrUndefined(liCollections) && !isNullOrUndefined(this.ulElement)) {\n append(liCollections, this.ulElement);\n }\n this.updateAddItemList(this.list, itemsCount);\n }\n else {\n if (this.getModuleName() === 'listbox' && itemsCount === 0) {\n this.ulElement.innerHTML = '';\n }\n var attr = [];\n for (var i = 0; i < items.length; i++) {\n var listGroupItem = this.ulElement.querySelectorAll('.e-list-group-item');\n for (var j = 0; j < listGroupItem.length; j++) {\n attr[j] = listGroupItem[j].innerText;\n }\n if (attr.indexOf(liCollections[i].innerText) > -1 && fields.groupBy) {\n for (var j = 0; j < listGroupItem.length; j++) {\n if (attr[j] === liCollections[i].innerText) {\n if (this.sortOrder === 'None') {\n this.ulElement.insertBefore(liCollections[i + 1], listGroupItem[j + 1]);\n }\n else {\n this.ulElement.insertBefore(liCollections[i + 1], this.ulElement.childNodes[itemIndex]);\n }\n i = i + 1;\n break;\n }\n }\n }\n else {\n if (this.liCollections[index]) {\n this.liCollections[index].parentNode.insertBefore(liCollections[i], this.liCollections[index]);\n }\n else {\n this.ulElement.appendChild(liCollections[i]);\n }\n }\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 0, liCollections[i]);\n this.liCollections = tempLi;\n index += 1;\n if (this.getModuleName() === 'multiselect') {\n this.updateDataList();\n }\n }\n }\n if (this.getModuleName() === 'listbox' && this.isReact) {\n this.renderReactTemplates();\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n this.addedNewItem = true;\n };\n DropDownBase.prototype.validationAttribute = function (target, hidden) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (!target.getAttribute(attributes[i])) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n hidden.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n DropDownBase.prototype.setZIndex = function () {\n // this is for component wise\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateAddItemList = function (list, itemCount) {\n // this is for multiselect add item\n };\n DropDownBase.prototype.updateDataList = function () {\n // this is for multiselect update list items\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownBase.prototype.getDataByValue = function (value) {\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownBase.prototype.destroy = function () {\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n this.liCollections = null;\n this.ulElement = null;\n this.list = null;\n this.enableRtlElements = null;\n this.rippleFun = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], DropDownBase.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], DropDownBase.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], DropDownBase.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], DropDownBase.prototype, \"sortOrder\", void 0);\n __decorate([\n Property([])\n ], DropDownBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownBase.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(1000)\n ], DropDownBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], DropDownBase.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"destroyed\", void 0);\n DropDownBase = __decorate([\n NotifyPropertyChanges\n ], DropDownBase);\n return DropDownBase;\n}(Component));\nexport { DropDownBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Event, compile, KeyboardEvents, append, select } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, getUniqueID, formatUnit, isUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Animation, Browser, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, prepend, detach, classList } from '@syncfusion/ej2-base';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { incrementalSearch, resetIncrementalSearchValues } from '../common/incremental-search';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\n// don't use space in classnames\nexport var dropDownListClasses = {\n root: 'e-dropdownlist',\n hover: dropDownBaseClasses.hover,\n selected: dropDownBaseClasses.selected,\n rtl: dropDownBaseClasses.rtl,\n li: dropDownBaseClasses.li,\n disable: dropDownBaseClasses.disabled,\n base: dropDownBaseClasses.root,\n focus: dropDownBaseClasses.focus,\n input: 'e-input-group',\n inputFocus: 'e-input-focus',\n icon: 'e-input-group-icon e-ddl-icon',\n iconAnimation: 'e-icon-anim',\n value: 'e-input-value',\n device: 'e-ddl-device',\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n mobileFilter: 'e-ddl-device-filter',\n footer: 'e-ddl-footer',\n header: 'e-ddl-header',\n clearIcon: 'e-clear-icon',\n clearIconHide: 'e-clear-icon-hide',\n popupFullScreen: 'e-popup-full-page',\n disableIcon: 'e-ddl-disable-icon',\n hiddenElement: 'e-ddl-hidden'\n};\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The DropDownList component contains a list of predefined values from which you can\n * choose a single value.\n * ```html\n * \n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nvar DropDownList = /** @class */ (function (_super) {\n __extends(DropDownList, _super);\n /**\n * * Constructor for creating the DropDownList component.\n *\n * @param {DropDownListModel} options - Specifies the DropDownList model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isAngular = false;\n return _this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.preRender = function () {\n this.valueTempElement = null;\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { isUpdated: false };\n this.actionData = { isUpdated: false };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.previousValue = null;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.renderList = function (e, isEmptyData) {\n _super.prototype.render.call(this, e, isEmptyData);\n this.unWireListEvents();\n this.wireListEvents();\n };\n DropDownList.prototype.floatLabelChange = function () {\n if (this.getModuleName() === 'dropdownlist' && this.floatLabelType === 'Auto') {\n var floatElement = this.inputWrapper.container.querySelector('.e-float-text');\n if (this.inputElement.value !== '' || this.isInteracted) {\n classList(floatElement, ['e-label-top'], ['e-label-bottom']);\n }\n else {\n classList(floatElement, ['e-label-bottom'], ['e-label-top']);\n }\n }\n };\n DropDownList.prototype.resetHandler = function (e) {\n e.preventDefault();\n this.clearAll(e);\n };\n DropDownList.prototype.resetFocusElement = function () {\n this.removeHover();\n this.removeSelection();\n this.removeFocus();\n this.list.scrollTop = 0;\n if (this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.ulElement)) {\n var li = this.ulElement.querySelector('.' + dropDownListClasses.li);\n if (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n };\n DropDownList.prototype.clearAll = function (e, properties) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (isNullOrUndefined(properties) || (!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.isActive = true;\n this.resetSelection(properties);\n }\n var dataItem = this.getItemData();\n if (this.previousValue === dataItem.value) {\n return;\n }\n this.onChangeEvent(e);\n };\n DropDownList.prototype.resetSelection = function (properties) {\n if (this.list) {\n if ((!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.selectedLI = null;\n this.actionCompleteData.isUpdated = false;\n this.actionCompleteData.ulElement = null;\n this.actionCompleteData.list = null;\n this.resetList(properties.dataSource);\n }\n else {\n if (this.allowFiltering && this.getModuleName() !== 'autocomplete'\n && !isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list) &&\n this.actionCompleteData.list.length > 0) {\n this.onActionComplete(this.actionCompleteData.ulElement.cloneNode(true), this.actionCompleteData.list);\n }\n this.resetFocusElement();\n }\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.inputElement)) {\n this.inputElement.value = '';\n }\n this.value = null;\n this.itemData = null;\n this.text = null;\n this.index = null;\n this.activeIndex = null;\n this.item = null;\n this.queryString = '';\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n this.setSelection(null, null);\n this.isSelectCustom = false;\n this.updateIconState();\n this.cloneElements();\n };\n DropDownList.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[\"\" + htmlAttr] === 'disabled') {\n this.enabled = false;\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[\"\" + htmlAttr])) {\n this.readonly = true;\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.container.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'aria-label') {\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputElement.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else {\n this.inputWrapper.container.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder',\n 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n defaultAttr.push('tabindex');\n }\n if (validateAttr.indexOf(htmlAttr) > -1 || htmlAttr.indexOf('data') === 0) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputElement);\n }\n else {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputWrapper.container.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputWrapper.container.removeAttribute('tabindex');\n }\n };\n DropDownList.prototype.getAriaAttributes = function () {\n return {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false',\n 'aria-live': 'polite',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownList.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputElement.parentElement]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n DropDownList.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hidePopup();\n addClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.targetElement().tabIndex = -1;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownList.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n DropDownList.prototype.getLocaleName = function () {\n return 'drop-down-list';\n };\n DropDownList.prototype.preventTabIndex = function (element) {\n if (this.getModuleName() === 'dropdownlist') {\n element.tabIndex = -1;\n }\n };\n DropDownList.prototype.targetElement = function () {\n return !isNullOrUndefined(this.inputWrapper) ? this.inputWrapper.container : null;\n };\n DropDownList.prototype.getNgDirective = function () {\n return 'EJS-DROPDOWNLIST';\n };\n DropDownList.prototype.getElementByText = function (text) {\n return this.getElementByValue(this.getValueByText(text));\n };\n DropDownList.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n DropDownList.prototype.initValue = function () {\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n DropDownList.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n this.setSelection(this.getElementByValue(this.value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DropDownList.prototype.onBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var target = e.relatedTarget;\n var currentTarget = e.target;\n var isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter))) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (((this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut();\n };\n DropDownList.prototype.onFocusOut = function () {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(null);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\n };\n DropDownList.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var val = (this.element.tagName === this.getNgDirective()) ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n };\n DropDownList.prototype.wireEvent = function () {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n this.bindCommonEvent();\n };\n DropDownList.prototype.bindCommonEvent = function () {\n EventHandler.add(this.targetElement(), 'blur', this.onBlurHandler, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.mobileKeyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n this.bindClearEvent();\n };\n DropDownList.prototype.windowResize = function () {\n if (this.isPopupOpen) {\n this.popupObj.refreshPosition(this.inputWrapper.container);\n }\n };\n DropDownList.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DropDownList.prototype.unBindCommonEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper) && this.targetElement()) {\n EventHandler.remove(this.targetElement(), 'blur', this.onBlurHandler);\n }\n var formElement = this.inputElement && closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n if (this.showClearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown', this.resetHandler);\n }\n };\n DropDownList.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n DropDownList.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n DropDownList.prototype.onSearch = function (e) {\n if (e.charCode !== 32 && e.charCode !== 13) {\n if (this.list === undefined) {\n this.renderList();\n }\n this.searchKeyEvent = e;\n this.onServerIncrementalSearch(e);\n }\n };\n DropDownList.prototype.onServerIncrementalSearch = function (e) {\n if (!this.isRequested && !isNullOrUndefined(this.list) &&\n !isNullOrUndefined(this.list.querySelector('li')) && this.enabled && !this.readonly) {\n this.incrementalSearch(e);\n }\n };\n DropDownList.prototype.onMouseClick = function (e) {\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\n else {\n var delay = 100;\n this.closePopup(delay, e);\n }\n };\n DropDownList.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n DropDownList.prototype.setHover = function (li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n DropDownList.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n DropDownList.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n DropDownList.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n var li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] ||\n !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[0] || this.inputWrapper.buttons[0];\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n DropDownList.prototype.keyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var preventAction = e.action === 'pageUp' || e.action === 'pageDown';\n var preventHomeEnd = this.getModuleName() !== 'dropdownlist' && (e.action === 'home' || e.action === 'end');\n this.isEscapeKey = e.action === 'escape';\n this.isTabKey = !this.isPopupOpen && e.action === 'tab';\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n if ((this.isEditTextBox() || preventAction || preventHomeEnd) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (isNullOrUndefined(this.list) && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n this.renderList(e);\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if ((isTabAction && this.getModuleName() !== 'autocomplete') && this.isPopupOpen\n || e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n this.isTyped = (isNavigation || e.action === 'escape') ? false : this.isTyped;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'pageUp':\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'pageDown':\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'home':\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n }\n }\n break;\n case 'open':\n this.showPopup(e);\n break;\n case 'hide':\n this.preventAltUp = this.isPopupOpen;\n this.hidePopup(e);\n this.focusDropDown(e);\n break;\n case 'enter':\n this.selectCurrentItem(e);\n break;\n case 'tab':\n this.selectCurrentValueOnTab(e);\n break;\n case 'escape':\n case 'close':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n break;\n }\n }\n };\n DropDownList.prototype.updateUpDownAction = function (e) {\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n var startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n var nextItem = void 0;\n if (this.getModuleName() !== 'autocomplete' || this.getModuleName() === 'autocomplete' && this.isPopupOpen) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex]\n : this.liCollections[index];\n }\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n e.preventDefault();\n };\n DropDownList.prototype.updateHomeEndAction = function (e) {\n if (this.getModuleName() === 'dropdownlist') {\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n }\n else {\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n return;\n }\n this.setSelection(this.liCollections[findLi], e);\n }\n };\n DropDownList.prototype.selectCurrentValueOnTab = function (e) {\n if (this.getModuleName() === 'autocomplete') {\n this.selectCurrentItem(e);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n }\n };\n DropDownList.prototype.mobileKeyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if ((this.isEditTextBox()) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n if (this.list === undefined && !this.isRequested) {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.getPageCount = function () {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n };\n DropDownList.prototype.pageUpSelection = function (steps, event) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n this.setSelection(previousItem, event);\n };\n DropDownList.prototype.pageDownSelection = function (steps, event) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n this.setSelection(previousItem, event);\n };\n DropDownList.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n DropDownList.prototype.unWireListEvents = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\n !isNullOrUndefined(this.inputWrapper) && !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n var isActive = this.isRequested;\n this.isInteracted = false;\n this.hidePopup(e);\n if (!isActive) {\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n var target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n }\n else {\n this.focusIn(e);\n this.floatLabelChange();\n this.queryString = this.inputElement.value.trim() === '' ? null : this.inputElement.value;\n this.isDropDownClick = true;\n this.showPopup(e);\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n // eslint-disable-next-line max-len\n var duration = (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(function () {\n proxy_1.cloneElements();\n proxy_1.isSecondClick = true;\n }, duration);\n }\n }\n else {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.cloneElements = function () {\n if (this.list) {\n var ulElement = this.list.querySelector('ul');\n if (ulElement) {\n ulElement = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.actionCompleteData.ulElement = ulElement;\n }\n }\n };\n DropDownList.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = li.getAttribute('data-value') !== \"null\" ? this.getFormattedValue(li.getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value);\n if (!this.initial && !preventSelect && !isNullOrUndefined(e)) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n }\n else {\n _this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n DropDownList.prototype.selectEventCallback = function (li, e, preventSelect, selectedData, value) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (this.itemData != selectedData) {\n this.previousValue = (!isNullOrUndefined(this.itemData)) ? typeof this.itemData == \"object\" ? this.checkFieldValue(this.itemData, this.fields.value.split('.')) : this.itemData : null;\n }\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n this.activeIndex = this.getIndexByValue(value);\n };\n DropDownList.prototype.activeItem = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.setValue = function (e) {\n var dataItem = this.getItemData();\n if (dataItem.value === null) {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n else if (!isNullOrUndefined(this.valueTempElement) && this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n var clearIcon = dropDownListClasses.clearIcon;\n var isFilterElement = this.isFiltering() && this.filterInput && (this.getModuleName() === 'combobox');\n var clearElement = isFilterElement && this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (this.isFiltering() && clearElement) {\n clearElement.style.removeProperty('visibility');\n }\n if (this.previousValue === dataItem.value) {\n this.isSelected = false;\n return true;\n }\n else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n };\n DropDownList.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n }\n };\n DropDownList.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.setValue(e)) {\n return;\n }\n if ((!this.isPopupOpen && !isNullOrUndefined(li)) || (this.isPopupOpen && !isNullOrUndefined(e) &&\n (e.type !== 'keydown' || e.type === 'keydown' && e.action === 'enter'))) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI) && this.itemData !== null && (!e || e.type !== 'click')) {\n this.setScrollPosition(e);\n }\n if (Browser.info.name !== 'mozilla') {\n if (this.targetElement()) {\n attributes(this.targetElement(), { 'aria-describedby': this.inputElement.id !== '' ? this.inputElement.id : this.element.id });\n this.targetElement().removeAttribute('aria-live');\n }\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n };\n DropDownList.prototype.dropdownCompiler = function (dropdownTemplate) {\n var checkTemplate = false;\n if (typeof dropdownTemplate !== 'function' && dropdownTemplate) {\n try {\n checkTemplate = (document.querySelectorAll(dropdownTemplate).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownList.prototype.setValueTemplate = function () {\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['valueTemplate']);\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n }\n if (!this.valueTempElement) {\n this.valueTempElement = this.createElement('span', { className: dropDownListClasses.value });\n this.inputElement.parentElement.insertBefore(this.valueTempElement, this.inputElement);\n this.inputElement.style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.valueTempElement.innerHTML = '';\n }\n var valuecheck = this.dropdownCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(document.querySelector(this.valueTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var valueCompTemp = compiledString(this.itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, this.valueTempElement);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, this.valueTempElement);\n }\n this.renderReactTemplates();\n };\n DropDownList.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n DropDownList.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n /**\n * To trigger the change event for list.\n *\n * @param {MouseEvent | KeyboardEvent | TouchEvent} eve - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onChangeEvent = function (eve) {\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': dataItem.value }, true);\n this.detachChangeEvent(eve);\n };\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n DropDownList.prototype.detachChangeEvent = function (eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\n element: this.element,\n event: eve\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n };\n DropDownList.prototype.setHiddenValue = function () {\n if (!isNullOrUndefined(this.value)) {\n if (this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', this.value.toString());\n }\n else {\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', this.value.toString());\n }\n }\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /**\n * Filter bar implementation\n *\n * @param {KeyboardEventArgs} e - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onFilterUp = function (e) {\n if (!(e.ctrlKey && e.keyCode === 86) && (this.isValidKey || e.keyCode === 40 || e.keyCode === 38)) {\n this.isValidKey = false;\n switch (e.keyCode) {\n case 38: //up arrow\n case 40: //down arrow\n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n if (this.getModuleName() === 'autocomplete' && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() !== 'dropdownlist') {\n this.preventAutoFill = true;\n this.searchLists(e);\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n }\n e.preventDefault();\n break;\n default:\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n break;\n }\n }\n else {\n this.isValidKey = false;\n }\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow\n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //tab\n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n };\n DropDownList.prototype.removeFillSelection = function () {\n if (this.isInteracted) {\n var selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n };\n DropDownList.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };\n };\n DropDownList.prototype.searchLists = function (e) {\n var _this = this;\n this.isTyped = true;\n this.activeIndex = null;\n this.isListSearched = true;\n if (this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n this.isDataFetched = false;\n if (this.isFiltering()) {\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.filteringAction(dataSource, query, fields);\n },\n baseEventArgs: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {\n _this.filteringAction(_this.dataSource, null, _this.fields);\n }\n });\n }\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n DropDownList.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFilter = true;\n this.filteringAction(dataSource, query, fields);\n };\n DropDownList.prototype.filteringAction = function (dataSource, query, fields) {\n if (!isNullOrUndefined(this.filterInput)) {\n this.beforePopupOpen = (!this.isPopupOpen && this.getModuleName() === 'combobox' && this.filterInput.value === '') ?\n false : true;\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list);\n }\n this.isTyped = true;\n if (!isNullOrUndefined(this.itemData) && this.getModuleName() === 'dropdownlist') {\n this.focusIndexItem();\n this.setScrollPosition();\n }\n this.isNotSearchList = true;\n }\n else {\n this.isNotSearchList = false;\n query = (this.filterInput.value.trim() === '') ? null : query;\n this.resetList(dataSource, fields, query);\n }\n this.renderReactTemplates();\n }\n };\n DropDownList.prototype.setSearchBox = function (popupElement) {\n if (this.isFiltering()) {\n var parentElement = popupElement.querySelector('.' + dropDownListClasses.filterParent) ?\n popupElement.querySelector('.' + dropDownListClasses.filterParent) : this.createElement('span', {\n className: dropDownListClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: dropDownListClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ?\n [dropDownListClasses.backIcon, dropDownListClasses.filterBarClearIcon] : [dropDownListClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n if (!isNullOrUndefined(this.cssClass)) {\n if (this.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], parentElement);\n prepend([parentElement], popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n if (!Browser.isDevice) {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n else {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.mobileKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.pasteHandler, this);\n return this.filterInputObj;\n }\n else {\n return inputObject;\n }\n };\n DropDownList.prototype.onInput = function (e) {\n this.isValidKey = true;\n if (this.getModuleName() === 'combobox') {\n this.updateIconState();\n }\n // For filtering works in mobile firefox.\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.typedString = this.filterInput.value;\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n };\n DropDownList.prototype.pasteHandler = function (e) {\n var _this = this;\n setTimeout(function () {\n _this.typedString = _this.filterInput.value;\n _this.searchLists(e);\n });\n };\n DropDownList.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.isNotSearchList) {\n this.isNotSearchList = false;\n return;\n }\n if (this.isActive || !isNullOrUndefined(ulElement)) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent) && this.searchKeyEvent.type === 'keydown') {\n this.isRequested = false;\n this.keyActionHandler(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent)) {\n this.incrementalSearch(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n this.list.scrollTop = 0;\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n if (this.initRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.initRemoteRender = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var fieldValue_1 = this.fields.value.split('.');\n var checkVal = list.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === _this.value : x[checkField_1] === _this.value;\n });\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', this.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n _this.updateValues();\n }\n else {\n _this.updateValues();\n }\n });\n }\n else {\n this.updateValues();\n }\n }\n else {\n this.updateValues();\n }\n this.initial = false;\n }\n else if (this.getModuleName() === 'autocomplete' && this.value) {\n this.setInputValue();\n }\n if (this.getModuleName() !== 'autocomplete' && this.isFiltering() && !this.isTyped) {\n if (!this.actionCompleteData.isUpdated || ((!this.isCustomFilter\n && !this.isFilterFocus) || (isNullOrUndefined(this.itemData) && this.allowFiltering)\n && ((this.dataSource instanceof DataManager)\n || (!isNullOrUndefined(this.dataSource) && !isNullOrUndefined(this.dataSource.length) &&\n this.dataSource.length !== 0)))) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.updateActionCompleteDataValues(ulElement, list);\n }, 0);\n }\n else {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n this.addNewItem(list, selectedItem);\n if (!isNullOrUndefined(this.itemData)) {\n this.focusIndexItem();\n }\n }\n if (this.beforePopupOpen) {\n this.renderPopup(e);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.checkFieldValue = function (list, fieldValue) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var checkField = list;\n fieldValue.forEach(function (value) {\n checkField = checkField[value];\n });\n return checkField;\n };\n DropDownList.prototype.updateActionCompleteDataValues = function (ulElement, list) {\n this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n if (this.actionData.list !== this.actionCompleteData.list && this.actionCompleteData.ulElement && this.actionCompleteData.list) {\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.addNewItem = function (listData, newElement) {\n var _this = this;\n if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {\n var value_1 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_1) ||\n (getValue(_this.fields.value, data) === value_1));\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n };\n DropDownList.prototype.updateActionCompleteData = function (li, item, index) {\n var _this = this;\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteDataUpdate(li, item, index);\n }, 0);\n }\n else {\n this.actionCompleteDataUpdate(li, item, index);\n }\n }\n };\n DropDownList.prototype.actionCompleteDataUpdate = function (li, item, index) {\n if (index !== null) {\n this.actionCompleteData.ulElement.\n insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n this.removeFocus();\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ 'index': this.getIndexByValue(selectedItem.getAttribute('data-value')) });\n this.activeIndex = this.index;\n }\n else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.removeFocus = function () {\n var highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.renderPopup = function (e) {\n var _this = this;\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-ddl e-popup ' + (_this.cssClass !== null ? _this.cssClass : '')\n });\n var searchBox = _this.setSearchBox(popupEle);\n _this.listHeight = formatUnit(_this.popupHeight);\n if (_this.headerTemplate) {\n _this.setHeaderTemplate(popupEle);\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate) {\n _this.setFooterTemplate(popupEle);\n }\n document.body.appendChild(popupEle);\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container)) {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listHeight = (parseInt(_this.listHeight, 10) - (_this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.headerTemplate) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else {\n _this.list.scrollTop = 0;\n }\n if (Browser.isDevice && (!_this.allowFiltering && (_this.getModuleName() === 'dropdownlist' ||\n (_this.isDropDownClick && _this.getModuleName() === 'combobox')))) {\n offsetValue = _this.getOffsetValue(popupEle);\n var firstItem = _this.isEmptyList() ? _this.list : _this.liCollections[0];\n if (!isNullOrUndefined(_this.inputElement)) {\n left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\n }\n }\n _this.getFocusElement();\n _this.createPopup(popupEle, offsetValue, left);\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || (_this.getModuleName() === 'combobox'\n && !_this.allowFiltering && _this.isDropDownClick)) {\n _this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n if (_this.isFilterLayout()) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = { X: 0, Y: 0 };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, _this.popupObj.element], dropDownListClasses.popupFullScreen);\n _this.setSearchBoxPosition();\n _this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n _this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(_this.backIconElement, 'click', _this.clickOnBackIcon, _this);\n EventHandler.add(_this.clearIconElement, 'click', _this.clearText, _this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n var scrollParentElements = _this.popupObj.getScrollableParent(_this.inputWrapper.container);\n for (var _i = 0, scrollParentElements_1 = scrollParentElements; _i < scrollParentElements_1.length; _i++) {\n var element = scrollParentElements_1[_i];\n EventHandler.add(element, 'scroll', _this.scrollHandler, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n attributes(_this.targetElement(), { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_options' });\n _this.inputElement.setAttribute('aria-expanded', 'true');\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, event: e, cancel: false, animation: animModel };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!isNullOrUndefined(_this.inputWrapper)) {\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n }\n _this.renderReactTemplates();\n if (!isNullOrUndefined(_this.popupObj)) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\n }\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n DropDownList.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'dropdownlist' || this.isDropDownClick))) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.getOffsetValue = function (popupEle) {\n var popupStyles = getComputedStyle(popupEle);\n var borderTop = parseInt(popupStyles.borderTopWidth, 10);\n var borderBottom = parseInt(popupStyles.borderBottomWidth, 10);\n return this.setPopupPosition(borderTop + borderBottom);\n };\n DropDownList.prototype.createPopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputWrapper.container, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left,\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n zIndex: this.zIndex,\n close: function () {\n if (!_this.isDocumentClick) {\n _this.focusDropDown();\n }\n // eslint-disable-next-line\n if (_this.isReact) {\n _this.clearTemplate(['headerTemplate', 'footerTemplate']);\n }\n _this.isNotSearchList = false;\n _this.isDocumentClick = false;\n _this.destroyPopup();\n if (_this.isFiltering() && _this.actionCompleteData.list && _this.actionCompleteData.list[0]) {\n _this.isActive = true;\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n var actionList = _this.actionCompleteData && _this.actionCompleteData.ulElement &&\n _this.actionCompleteData.ulElement.querySelector('li');\n var ulElement = _this.list.querySelector('ul li');\n if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n if (_this.isFiltering() && _this.itemTemplate && (_this.element.tagName === _this.getNgDirective()) &&\n (actionList && ulElement && actionList.textContent !== ulElement.textContent) &&\n _this.element.tagName !== 'EJS-COMBOBOX') {\n _this.cloneElements();\n }\n if (_this.isFilterLayout()) {\n removeClass([_this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n _this.isFilterFocus = true;\n _this.filterInput.focus();\n if (_this.inputWrapper.clearButton) {\n addClass([_this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n _this.activeStateChange();\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n };\n DropDownList.prototype.isEmptyList = function () {\n return !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0;\n };\n DropDownList.prototype.getFocusElement = function () {\n // combo-box used this method\n };\n DropDownList.prototype.isFilterLayout = function () {\n return this.getModuleName() === 'dropdownlist' && this.allowFiltering;\n };\n DropDownList.prototype.scrollHandler = function () {\n if (Browser.isDevice && ((this.getModuleName() === 'dropdownlist' &&\n !this.isFilterLayout()) || (this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick))) {\n this.hidePopup();\n }\n };\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n var listHeight = this.list.offsetHeight / 2;\n var height = isNullOrUndefined(selectedLI) ? firstItem.offsetTop : selectedLI.offsetTop;\n var lastItemOffsetValue = lastItem.offsetTop;\n if (lastItemOffsetValue - listHeight < height && !isNullOrUndefined(this.liCollections) &&\n this.liCollections.length > 0 && !isNullOrUndefined(selectedLI)) {\n var count = this.list.offsetHeight / liHeight;\n var paddingBottom = parseInt(getComputedStyle(this.list).paddingBottom, 10);\n offsetValue = (count - (this.liCollections.length - this.activeIndex)) * liHeight - popupOffset + paddingBottom;\n this.list.scrollTop = selectedLI.offsetTop;\n }\n else if (height > listHeight) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\n else {\n offsetValue = height;\n }\n var inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - ((liHeight - inputHeight) / 2);\n return -offsetValue;\n };\n DropDownList.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = (parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial) {\n if (!isNullOrUndefined(this.selectedLI)) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset;\n var boxRange = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n };\n DropDownList.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = this.selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n };\n DropDownList.prototype.isEditTextBox = function () {\n return false;\n };\n DropDownList.prototype.isFiltering = function () {\n return this.allowFiltering;\n };\n DropDownList.prototype.isPopupButton = function () {\n return true;\n };\n DropDownList.prototype.setScrollPosition = function (e) {\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.scrollBottom();\n break;\n default:\n this.scrollTop();\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\n };\n DropDownList.prototype.setEleWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n DropDownList.prototype.closePopup = function (delay, e) {\n var _this = this;\n this.isTyped = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n this.filterInputObj = null;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout()) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n if (!isNullOrUndefined(this.filterInput)) {\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlurHandler);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n }\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false' });\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.targetElement().removeAttribute('aria-owns');\n this.targetElement().removeAttribute('aria-activedescendant');\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!isNullOrUndefined(_this.popupObj) &&\n !isNullOrUndefined(_this.popupObj.element.querySelector('.e-fixed-head'))) {\n var fixedHeader = _this.popupObj.element.querySelector('.e-fixed-head');\n fixedHeader.parentNode.removeChild(fixedHeader);\n _this.fixedHeaderElement = null;\n }\n if (!eventArgs.cancel) {\n if (_this.getModuleName() === 'autocomplete') {\n _this.rippleFun();\n }\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n if (this.isReact && this.isFiltering() && this.itemTemplate != null) {\n this.actionCompleteData.ulElement = this.ulElement.cloneNode(true);\n }\n };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n DropDownList.prototype.clickOnBackIcon = function () {\n this.hidePopup();\n this.focusIn();\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.render = function () {\n if (this.element.tagName === 'INPUT') {\n this.inputElement = this.element;\n if (isNullOrUndefined(this.inputElement.getAttribute('role'))) {\n this.inputElement.setAttribute('role', 'combobox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\n else {\n this.inputElement = this.createElement('input', { attrs: { role: 'combobox', type: 'text' } });\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n this.element.parentElement.insertBefore(this.inputElement, this.element);\n this.preventTabIndex(this.inputElement);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n buttons: this.isPopupButton() ? [dropDownListClasses.icon] : null,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.getModuleName() === 'dropdownlist' ? true : this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.inputWrapper.container);\n }\n else {\n this.inputElement.parentElement.insertBefore(this.element, this.inputElement);\n }\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': dropDownListClasses.hiddenElement }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\n this.validationAttribute(this.element, this.hiddenElement);\n this.setReadOnly();\n this.setFields();\n this.inputWrapper.container.style.width = formatUnit(this.width);\n this.inputWrapper.container.classList.add('e-ddl');\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement.id = id + '_hidden';\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n else {\n attributes(this.targetElement(), { 'aria-label': this.getModuleName() });\n }\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.targetElement() === this.inputElement) {\n this.inputElement.removeAttribute('aria-labelledby');\n }\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n this.initValue();\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = selectElement.options[selectElement.selectedIndex].value;\n this.text = isNullOrUndefined(this.value) ? null : selectElement.options[selectElement.selectedIndex].textContent;\n this.initValue();\n }\n this.setEnabled();\n this.preventTabIndex(this.element);\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n this.initial = false;\n this.element.style.opacity = '';\n this.inputElement.onselect = function (e) {\n e.stopImmediatePropagation();\n };\n this.inputElement.onchange = function (e) {\n e.stopImmediatePropagation();\n };\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n if (!isNullOrUndefined(this.text)) {\n this.inputElement.setAttribute('value', this.text);\n }\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n var floatLabelElement = this.inputWrapper.container.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(this.element.id) && this.element.id !== '' && !isNullOrUndefined(floatLabelElement)) {\n floatLabelElement.id = 'label_' + this.element.id.replace(/ /g, '_');\n attributes(this.inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n this.renderComplete();\n };\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], dropDownListClasses.footer);\n }\n var footercheck = this.dropdownCompiler(this.footerTemplate);\n if (typeof this.footerTemplate !== 'function' && footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var footerCompTemp = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (footerCompTemp && footerCompTemp.length > 0) {\n append(footerCompTemp, this.footer);\n }\n append([this.footer], popupEle);\n };\n DropDownList.prototype.setHeaderTemplate = function (popupEle) {\n var compiledString;\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], dropDownListClasses.header);\n }\n var headercheck = this.dropdownCompiler(this.headerTemplate);\n if (typeof this.headerTemplate !== 'function' && headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var headerCompTemp = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (headerCompTemp && headerCompTemp.length) {\n append(headerCompTemp, this.header);\n }\n var contentEle = popupEle.querySelector('div.e-content');\n popupEle.insertBefore(this.header, contentEle);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n DropDownList.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n DropDownList.prototype.setOldText = function (text) {\n this.text = text;\n };\n DropDownList.prototype.setOldValue = function (value) {\n this.value = value;\n };\n DropDownList.prototype.refreshPopup = function () {\n if (!isNullOrUndefined(this.popupObj) && document.body.contains(this.popupObj.element) &&\n ((this.allowFiltering && !(Browser.isDevice && this.isFilterLayout())) || this.getModuleName() === 'autocomplete')) {\n removeClass([this.popupObj.element], 'e-popup-close');\n this.popupObj.refreshPosition(this.inputWrapper.container);\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.checkData = function (newProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource)) && this.itemTemplate && this.allowFiltering &&\n !(this.isListSearched && (newProp.dataSource instanceof DataManager))) {\n this.list = null;\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n this.isListSearched = false;\n var isChangeValue = Object.keys(newProp).indexOf('value') !== -1 && isNullOrUndefined(newProp.value);\n var isChangeText = Object.keys(newProp).indexOf('text') !== -1 && isNullOrUndefined(newProp.text);\n if (this.getModuleName() !== 'autocomplete' && this.allowFiltering && (isChangeValue || isChangeText)) {\n this.itemData = null;\n }\n if (this.allowFiltering && newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))) {\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n this.actionData = this.actionCompleteData;\n this.itemData = null;\n }\n else if (this.allowFiltering && newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.actionCompleteData = this.getModuleName() === 'combobox' ?\n { ulElement: null, list: null, isUpdated: false } : this.actionCompleteData;\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.updateDataSource = function (props) {\n if (this.inputElement.value !== '' || (!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0)))) {\n this.clearAll(null, props);\n }\n if ((this.fields.groupBy && props.fields) && !this.isGroupChecking && this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (!(!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0))) || !(props.dataSource === [])) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @private\n * @param {DropDownListModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownListModel} oldProp - Returns the previous previous value of the component.\n * @returns {void}\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (this.getModuleName() === 'dropdownlist') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'query':\n case 'dataSource': break;\n case 'htmlAttributes':\n this_1.setHTMLAttributes();\n break;\n case 'width':\n this_1.setEleWidth(newProp.width);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this_1.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this_1.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this_1.filterInput);\n }\n break;\n case 'readonly':\n if (this_1.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this_1.inputElement);\n }\n this_1.setReadOnly();\n break;\n case 'cssClass':\n this_1.setCssClass(newProp.cssClass, oldProp.cssClass);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'enableRtl':\n this_1.setEnableRtl();\n break;\n case 'enabled':\n this_1.setEnable();\n break;\n case 'text':\n if (newProp.text === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\n var li = this_1.getElementByText(newProp.text);\n if (!this_1.checkValidLi(li)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.text, oldProp.text, 'text');\n }\n else if (newProp.text && this_1.dataSource instanceof DataManager) {\n var listLength_1 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.text) ? this_1.fields.value : this_1.fields.text;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.text)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_1);\n _this.updateValues();\n }\n else {\n _this.setOldText(oldProp.text);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldText(oldProp.text);\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'value':\n if (newProp.value === null) {\n this_1.clearAll();\n break;\n }\n this_1.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\n var item = this_1.getElementByValue(newProp.value);\n if (!this_1.checkValidLi(item)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.value, oldProp.value, 'value');\n }\n else if (newProp.value && this_1.dataSource instanceof DataManager) {\n var listLength_2 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.value) ? this_1.fields.text : this_1.fields.value;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_2);\n _this.updateValues();\n }\n else {\n _this.setOldValue(oldProp.value);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldValue(oldProp.value);\n }\n }\n this_1.updateInputFields();\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n }\n break;\n case 'index':\n if (newProp.index === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender && this_1.liCollections) {\n var element = this_1.liCollections[newProp.index];\n if (!this_1.checkValidLi(element)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.index, oldProp.index, 'index');\n }\n else {\n this_1.index = oldProp.index;\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this_1.popupObj) {\n this_1.setFooterTemplate(this_1.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this_1.popupObj) {\n this_1.setHeaderTemplate(this_1.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this_1.itemData) && this_1.valueTemplate !== null) {\n this_1.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this_1.allowFiltering) {\n this_1.actionCompleteData = {\n ulElement: this_1.ulElement,\n list: this_1.listData, isUpdated: true\n };\n this_1.actionData = this_1.actionCompleteData;\n this_1.updateSelectElementData(this_1.allowFiltering);\n }\n break;\n case 'floatLabelType':\n Input.removeFloating(this_1.inputWrapper);\n Input.addFloating(this_1.inputElement, newProp.floatLabelType, this_1.placeholder, this_1.createElement);\n if (!isNullOrUndefined(this_1.inputWrapper.buttons[0]) && this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0] && this_1.floatLabelType !== 'Never') {\n this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'showClearButton':\n if (!this_1.inputWrapper.clearButton) {\n Input.setClearButton(newProp.showClearButton, this_1.inputElement, this_1.inputWrapper, null, this_1.createElement);\n this_1.bindClearEvent();\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var ddlProps = this_1.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this_1, ddlProps.newProperty, ddlProps.oldProperty);\n }\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_1(prop);\n }\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.setReadOnly = function () {\n if (this.readonly) {\n addClass([this.inputWrapper.container], ['e-readonly']);\n }\n else {\n removeClass([this.inputWrapper.container], ['e-readonly']);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.setInputValue = function (newProp, oldProp) {\n };\n DropDownList.prototype.setCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newClass, [this.inputWrapper.container], oldClass);\n if (this.popupObj) {\n Input.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownList.prototype.getModuleName = function () {\n return 'dropdownlist';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n DropDownList.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n if (this.isReact && this.getModuleName() === 'combobox' && this.itemTemplate && this.isCustomFilter && this.isAddNewItemTemplate) {\n this.renderList();\n this.isAddNewItemTemplate = false;\n }\n if (this.isFiltering() && this.dataSource instanceof DataManager && (this.actionData.list !== this.actionCompleteData.list) &&\n this.actionData.list && this.actionData.ulElement) {\n this.actionCompleteData = this.actionData;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n if (this.isFiltering() && !this.isActive && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) ||\n this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n this.renderList(e);\n }\n this.invokeRenderPopup(e);\n };\n DropDownList.prototype.invokeRenderPopup = function (e) {\n if (Browser.isDevice && this.isFilterLayout()) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_2 = this;\n window.onpopstate = function () {\n proxy_2.hidePopup();\n };\n history.pushState({}, '');\n }\n if (!isNullOrUndefined(this.list) && (!isNullOrUndefined(this.list.children[0]) ||\n this.list.classList.contains(dropDownBaseClasses.noData))) {\n this.renderPopup(e);\n }\n };\n DropDownList.prototype.renderHightSearch = function () {\n // update high light search\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n DropDownList.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.inputElement)) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n var element = this.findListElement(this.ulElement, 'li', 'data-value', this.value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\n if (this.inputElement && this.inputElement.value.trim() === '' && !this.isInteracted && (this.isSelectCustom ||\n isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Sets the focus on the component for interaction.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusIn = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n var isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n this.isTyped = true;\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n if (this.floatLabelType === 'Auto' && this.inputElement.value === '') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownList.prototype.destroy = function () {\n this.isActive = false;\n resetIncrementalSearchValues(this.element.id);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.hidePopup();\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby',\n 'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.element.style.display = 'block';\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n this.hiddenElement = null;\n this.inputWrapper = null;\n this.keyboardModule = null;\n this.ulElement = null;\n this.list = null;\n this.popupObj = null;\n this.rippleFun = null;\n this.selectedLI = null;\n this.liCollections = null;\n this.item = null;\n this.inputWrapper = null;\n this.footer = null;\n this.header = null;\n this.previousSelectedLI = null;\n this.valueTempElement = null;\n this.actionData.ulElement = null;\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onchange)) {\n this.inputElement.onchange = null;\n }\n if (this.isAngular) {\n this.inputElement = null;\n }\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"width\", void 0);\n __decorate([\n Property(true)\n ], DropDownList.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('300px')\n ], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n DropDownList = __decorate([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\nexport { DropDownList };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate, Deferred, UrlAdaptor, RemoteSaveAdaptor } from '@syncfusion/ej2-data';\nimport { setFormatter, isGroupAdaptive, getColumnByForeignKeyValue, refreshFilteredColsUid } from '../base/util';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * Grid data module is used to generate query and data source.\n *\n * @hidden\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n * @hidden\n */\n function Data(parent, serviceLocator) {\n this.dataState = { isPending: false, resolver: null, group: [] };\n this.foreignKeyDataState = { isPending: false, resolver: null };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.initDataManager();\n if (this.parent.isDestroyed || this.getModuleName() === 'foreignKey') {\n return;\n }\n this.parent.on(events.rowsAdded, this.addRows, this);\n this.parent.on(events.rowPositionChanged, this.reorderRows, this);\n this.parent.on(events.rowsRemoved, this.removeRows, this);\n this.parent.on(events.dataSourceModified, this.initDataManager, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.updateData, this.crudActions, this);\n this.parent.on(events.addDeleteAction, this.getData, this);\n this.parent.on(events.autoCol, this.refreshFilteredCols, this);\n this.parent.on(events.columnsPrepared, this.refreshFilteredCols, this);\n }\n Data.prototype.reorderRows = function (e) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]);\n };\n Data.prototype.getModuleName = function () {\n return 'data';\n };\n /**\n * The function used to initialize dataManager and external query\n *\n * @returns {void}\n */\n Data.prototype.initDataManager = function () {\n var gObj = this.parent;\n this.dataManager = gObj.dataSource instanceof DataManager ? gObj.dataSource :\n (isNullOrUndefined(gObj.dataSource) ? new DataManager() : new DataManager(gObj.dataSource));\n if (gObj.isAngular && !(gObj.query instanceof Query)) {\n gObj.setProperties({ query: new Query() }, true);\n }\n else {\n this.isQueryInvokedFromData = true;\n gObj.query = gObj.query instanceof Query ? gObj.query : new Query();\n }\n };\n /**\n * The function is used to generate updated Query from Grid model.\n *\n * @param {boolean} skipPage - specifies the boolean to skip the page\n * @param {boolean} isAutoCompleteCall - specifies for auto complete call\n * @returns {Query} returns the Query\n * @hidden\n */\n Data.prototype.generateQuery = function (skipPage, isAutoCompleteCall) {\n var gObj = this.parent;\n var query = gObj.getQuery().clone();\n if (this.parent.columnQueryMode === 'ExcludeHidden') {\n query.select(this.parent.getColumns().filter(function (column) { return !(column.isPrimaryKey !== true && column.visible === false || column.field === undefined); }).map(function (column) { return column.field; }));\n }\n else if (this.parent.columnQueryMode === 'Schema') {\n var selectQueryFields = [];\n var columns = this.parent.columns;\n for (var i = 0; i < columns.length; i++) {\n selectQueryFields.push(columns[parseInt(i.toString(), 10)].field);\n }\n query.select(selectQueryFields);\n }\n this.filterQuery(query);\n this.searchQuery(query);\n this.aggregateQuery(query);\n this.sortQuery(query);\n if (isGroupAdaptive(this.parent)) {\n this.virtualGroupPageQuery(query);\n }\n else {\n this.pageQuery(query, skipPage);\n }\n if (isNullOrUndefined(isAutoCompleteCall) || !isAutoCompleteCall) {\n this.groupQuery(query);\n }\n return query;\n };\n /**\n * @param {Query} query - specifies the query\n * @returns {Query} - returns the query\n * @hidden\n */\n Data.prototype.aggregateQuery = function (query) {\n var rows = this.parent.aggregates;\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n for (var j = 0; j < row.columns.length; j++) {\n var cols = row.columns[parseInt(j.toString(), 10)];\n var types = cols.type instanceof Array ? cols.type : [cols.type];\n for (var k = 0; k < types.length; k++) {\n query.aggregate(types[parseInt(k.toString(), 10)].toLowerCase(), cols.field);\n }\n }\n }\n return query;\n };\n Data.prototype.virtualGroupPageQuery = function (query) {\n var fName = 'fn';\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n };\n Data.prototype.pageQuery = function (query, skipPage) {\n var gObj = this.parent;\n var fName = 'fn';\n var args = { query: query, skipPage: false };\n gObj.notify(events.setVirtualPageQuery, args);\n if (args.skipPage) {\n return query;\n }\n if ((gObj.allowPaging || gObj.enableVirtualization || gObj.enableInfiniteScrolling) && skipPage !== true) {\n gObj.pageSettings.currentPage = Math.max(1, gObj.pageSettings.currentPage);\n if (gObj.pageSettings.pageCount <= 0) {\n gObj.pageSettings.pageCount = 8;\n }\n if (gObj.pageSettings.pageSize <= 0) {\n gObj.pageSettings.pageSize = 12;\n }\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n if (!isNullOrUndefined(gObj.infiniteScrollModule) && gObj.enableInfiniteScrolling) {\n this.parent.notify(events.infinitePageQuery, query);\n }\n else {\n query.page(gObj.pageSettings.currentPage, gObj.allowPaging && gObj.pagerModule &&\n (gObj.pagerModule.pagerObj.isAllPage && !gObj.isManualRefresh) &&\n (!this.dataManager.dataSource.offline && !(this.dataManager.adaptor instanceof RemoteSaveAdaptor)) ?\n null : gObj.pageSettings.pageSize);\n }\n }\n return query;\n };\n Data.prototype.groupQuery = function (query) {\n var gObj = this.parent;\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n if (this.parent.groupSettings.enableLazyLoading) {\n query.lazyLoad.push({ key: 'isLazyLoad', value: this.parent.groupSettings.enableLazyLoading });\n }\n var columns = gObj.groupSettings.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n var column = this.getColumnByField(columns[parseInt(i.toString(), 10)]);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'group', columnName: columns[parseInt(i.toString(), 10)] });\n }\n var isGrpFmt = column.enableGroupByFormat;\n var format = column.format;\n if (isGrpFmt) {\n query.group(columns[parseInt(i.toString(), 10)], this.formatGroupColumn.bind(this), format);\n }\n else {\n query.group(columns[parseInt(i.toString(), 10)], null);\n }\n }\n }\n return query;\n };\n Data.prototype.sortQuery = function (query) {\n var gObj = this.parent;\n if ((gObj.allowSorting || gObj.allowGrouping) && gObj.sortSettings.columns.length) {\n var columns = gObj.sortSettings.columns;\n var sortGrp = [];\n for (var i = columns.length - 1; i > -1; i--) {\n var col = this.getColumnByField(columns[parseInt(i.toString(), 10)].field);\n if (col) {\n col.setSortDirection(columns[parseInt(i.toString(), 10)].direction);\n }\n else {\n this.parent.log('initial_action', { moduleName: 'sort', columnName: columns[parseInt(i.toString(), 10)].field });\n return query;\n }\n var fn = columns[parseInt(i.toString(), 10)].direction;\n if (col.sortComparer) {\n this.parent.log('grid_sort_comparer');\n fn = !this.isRemote() ? col.sortComparer.bind(col) : columns[parseInt(i.toString(), 10)].direction;\n }\n if (gObj.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) === -1) {\n if (col.isForeignColumn() || col.sortComparer) {\n query.sortByForeignKey(col.field, fn, undefined, columns[parseInt(i.toString(), 10)].direction.toLowerCase());\n }\n else {\n query.sortBy(col.field, fn);\n }\n }\n else {\n sortGrp.push({ direction: fn, field: col.field });\n }\n }\n for (var i = 0, len = sortGrp.length; i < len; i++) {\n if (typeof sortGrp[parseInt(i.toString(), 10)].direction === 'string') {\n query.sortBy(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction);\n }\n else {\n var col = this.getColumnByField(sortGrp[parseInt(i.toString(), 10)].field);\n query.sortByForeignKey(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction, undefined, col.getSortDirection().toLowerCase());\n }\n }\n }\n return query;\n };\n Data.prototype.searchQuery = function (query, fcolumn, isForeignKey) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.getSearchColumnFieldNames();\n var predicateList = [];\n var needForeignKeySearch = false;\n if (this.parent.searchSettings.key.length) {\n needForeignKeySearch = this.parent.getForeignKeyColumns().some(function (col) { return fields.indexOf(col.field) > -1; });\n var adaptor = !isForeignKey ? this.dataManager.adaptor : fcolumn.dataSource.adaptor;\n if (needForeignKeySearch || (adaptor.getModuleName &&\n adaptor.getModuleName() === 'ODataV4Adaptor')) {\n fields = isForeignKey ? [fcolumn.foreignKeyValue] : fields;\n for (var i = 0; i < fields.length; i++) {\n var column = isForeignKey ? fcolumn : this.getColumnByField(fields[parseInt(i.toString(), 10)]);\n if (column.isForeignColumn() && !isForeignKey) {\n predicateList = this.fGeneratePredicate(column, predicateList);\n }\n else {\n predicateList.push(new Predicate(fields[parseInt(i.toString(), 10)], sSettings.operator, sSettings.key, sSettings.ignoreCase, sSettings.ignoreAccent));\n }\n }\n var predList = Predicate.or(predicateList);\n predList.key = sSettings.key;\n query.where(predList);\n }\n else {\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n }\n return query;\n };\n Data.prototype.filterQuery = function (query, column, skipFoerign) {\n var gObj = this.parent;\n var predicateList = [];\n var actualFilter = [];\n var foreignColumn = this.parent.getForeignKeyColumns();\n var foreignColEmpty;\n if (gObj.allowFiltering && gObj.filterSettings.columns.length) {\n var columns = column ? column : gObj.filterSettings.columns;\n var colType = {};\n for (var _i = 0, _a = gObj.getColumns(); _i < _a.length; _i++) {\n var col = _a[_i];\n colType[col.field] = col.filter.type ? col.filter.type : gObj.filterSettings.type;\n }\n var foreignCols = [];\n var defaultFltrCols = [];\n for (var _b = 0, columns_1 = columns; _b < columns_1.length; _b++) {\n var col = columns_1[_b];\n var gridColumn = col.isForeignKey ? gObj.getColumnByUid(col.uid) : gObj.getColumnByField(col.field);\n if (isNullOrUndefined(col.type) && gridColumn && (gridColumn.type === 'date' || gridColumn.type === 'datetime' || gridColumn.type === 'dateonly')) {\n col.type = col.isForeignKey ? gObj.getColumnByUid(col.uid).type : gObj.getColumnByField(col.field).type;\n }\n if (col.isForeignKey) {\n foreignCols.push(col);\n }\n else {\n defaultFltrCols.push(col);\n }\n }\n if (defaultFltrCols.length) {\n for (var i = 0, len = defaultFltrCols.length; i < len; i++) {\n defaultFltrCols[parseInt(i.toString(), 10)].uid = defaultFltrCols[parseInt(i.toString(), 10)].uid ||\n this.parent.grabColumnByFieldFromAllCols(defaultFltrCols[parseInt(i.toString(), 10)].field).uid;\n }\n var excelPredicate = CheckBoxFilterBase.getPredicate(defaultFltrCols);\n for (var _c = 0, _d = Object.keys(excelPredicate); _c < _d.length; _c++) {\n var prop = _d[_c];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n if (foreignCols.length) {\n for (var _e = 0, foreignCols_1 = foreignCols; _e < foreignCols_1.length; _e++) {\n var col = foreignCols_1[_e];\n col.uid = col.uid || this.parent.grabColumnByFieldFromAllCols(col.field).uid;\n var column_1 = this.parent.grabColumnByUidFromAllCols(col.uid);\n if (!column_1) {\n this.parent.log('initial_action', { moduleName: 'filter', columnName: col.field });\n }\n if (column_1.isForeignColumn() && getColumnByForeignKeyValue(col.field, foreignColumn) && !skipFoerign) {\n actualFilter.push(col);\n if (!column_1.columnData.length) {\n foreignColEmpty = true;\n }\n predicateList = this.fGeneratePredicate(column_1, predicateList);\n }\n else {\n var excelPredicate = CheckBoxFilterBase.getPredicate(columns);\n for (var _f = 0, _g = Object.keys(excelPredicate); _f < _g.length; _f++) {\n var prop = _g[_f];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n }\n }\n if (predicateList.length && !foreignColEmpty) {\n query.where(Predicate.and(predicateList));\n }\n else {\n this.parent.notify(events.showEmptyGrid, {});\n }\n }\n return query;\n };\n Data.prototype.fGeneratePredicate = function (col, predicateList) {\n var fPredicate = {};\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(fPredicate.predicate);\n }\n }\n return predicateList;\n };\n /**\n * The function is used to get dataManager promise by executing given Query.\n *\n * @param {object} args - specifies the object\n * @param {string} args.requestType - Defines the request type\n * @param {string[]} args.foreignKeyData - Defines the foreignKeyData.string\n * @param {Object} args.data - Defines the data.\n * @param {number} args.index - Defines the index .\n * @param {Query} query - Defines the query which will execute along with data processing.\n * @returns {Promise} - returns the object\n * @hidden\n */\n Data.prototype.getData = function (args, query) {\n var _this = this;\n if (args === void 0) { args = { requestType: '' }; }\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ?\n args.foreignKeyData : this.parent.getPrimaryKeyFieldNames());\n this.parent.log('datasource_syntax_mismatch', { dataState: this.parent });\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n var def = this.eventPromise(args, query, key);\n return def.promise;\n }\n else {\n var crud = void 0;\n switch (args.requestType) {\n case 'delete':\n query = query ? query : this.generateQuery();\n // eslint-disable-next-line no-case-declarations\n var len = Object.keys(args.data).length;\n if (len === 1) {\n crud = this.dataManager.remove(key, args.data[0], query.fromTable, query);\n }\n else {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n changes.deletedRecords = args.data;\n crud = this.dataManager.saveChanges(changes, key, query.fromTable, query.requiresCount());\n }\n break;\n case 'save':\n query = query ? query : this.generateQuery();\n args.index = isNullOrUndefined(args.index) ? 0 : args.index;\n crud = this.dataManager.insert(args.data, query.fromTable, query, args.index);\n break;\n }\n var promise = 'promise';\n args[\"\" + promise] = crud;\n // eslint-disable-next-line no-prototype-builtins\n if (crud && !Array.isArray(crud) && !crud.hasOwnProperty('deletedRecords')) {\n return crud.then(function () {\n return _this.insert(query, args);\n });\n }\n else {\n return this.insert(query, args);\n }\n }\n };\n Data.prototype.insert = function (query, args) {\n if (args.requestType === 'save') {\n this.parent.notify(events.recordAdded, args);\n }\n return this.executeQuery(query);\n };\n Data.prototype.executeQuery = function (query) {\n var _this = this;\n if (this.dataManager.ready) {\n var deferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function () {\n _this.dataManager.executeQuery(query).then(function (result) {\n deferred_1.resolve(result);\n });\n }).catch(function (e) {\n deferred_1.reject(e);\n });\n return deferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(query);\n }\n };\n Data.prototype.formatGroupColumn = function (value, field) {\n var serviceLocator = this.serviceLocator;\n var column = this.getColumnByField(field);\n var date = value;\n if (!column.type) {\n column.type = date.getDay ? (date.getHours() > 0 || date.getMinutes() > 0 ||\n date.getSeconds() > 0 || date.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n if (isNullOrUndefined(column.getFormatter())) {\n setFormatter(serviceLocator, column);\n }\n var formatVal = ValueFormatter.prototype.toView(value, column.getFormatter());\n return formatVal;\n };\n Data.prototype.crudActions = function (args) {\n var query = this.generateQuery();\n var promise = null;\n var pr = 'promise';\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ? args.foreignKeyData :\n this.parent.getPrimaryKeyFieldNames());\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.eventPromise(args, query, key);\n }\n switch (args.requestType) {\n case 'save':\n promise = this.dataManager.update(key, args.data, query.fromTable, query, args.previousData);\n break;\n }\n args[\"\" + pr] = promise ? promise : args[\"\" + pr];\n this.parent.notify(events.crudAction, args);\n };\n /**\n * @param {object} changes - specifies the changes\n * @param {string} key - specifies the key\n * @param {object} original - specifies the original data\n * @param {Query} query - specifies the query\n * @returns {Promise} returns the object\n * @hidden\n */\n Data.prototype.saveChanges = function (changes, key, original, query) {\n if (query === void 0) { query = this.generateQuery(); }\n query.requiresCount();\n if ('result' in this.parent.dataSource) {\n var deff = new Deferred();\n var args = {\n requestType: 'batchsave', changes: changes, key: key, query: query,\n endEdit: deff.resolve\n };\n this.setState({ isPending: true, resolver: deff.resolve });\n this.parent.trigger(events.dataSourceChanged, args);\n return deff.promise;\n }\n else {\n var promise = this.dataManager.saveChanges(changes, key, query.fromTable, query, original);\n return promise;\n }\n };\n Data.prototype.getKey = function (keys) {\n if (keys && keys.length) {\n return keys[0];\n }\n return undefined;\n };\n /**\n * @returns {boolean} returns whether its remote data\n * @hidden\n */\n Data.prototype.isRemote = function () {\n return this.dataManager.dataSource.offline !== true && this.dataManager.dataSource.url !== undefined &&\n this.dataManager.dataSource.url !== '';\n };\n Data.prototype.addRows = function (e) {\n for (var i = e.records.length; i > 0; i--) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, e.records[i - 1]);\n }\n };\n Data.prototype.removeRows = function (e) {\n var json = this.dataManager.dataSource.json;\n this.dataManager.dataSource.json = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n };\n Data.prototype.getColumnByField = function (field) {\n var col;\n return (this.parent.columnModel).some(function (column) {\n col = column;\n return column.field === field;\n }) && col;\n };\n Data.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowsAdded, this.addRows);\n this.parent.off(events.rowsRemoved, this.removeRows);\n this.parent.off(events.dataSourceModified, this.initDataManager);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.updateData, this.crudActions);\n this.parent.off(events.addDeleteAction, this.getData);\n this.parent.off(events.autoCol, this.refreshFilteredCols);\n this.parent.off(events.columnsPrepared, this.refreshFilteredCols);\n };\n Data.prototype.getState = function () {\n return this.dataState;\n };\n Data.prototype.setState = function (state) {\n return this.dataState = state;\n };\n Data.prototype.getForeignKeyDataState = function () {\n return this.foreignKeyDataState;\n };\n Data.prototype.setForeignKeyDataState = function (state) {\n this.foreignKeyDataState = state;\n };\n Data.prototype.getStateEventArgument = function (query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return extend(data, state.pvtData);\n };\n Data.prototype.eventPromise = function (args, query, key) {\n var _this = this;\n var dataArgs = args;\n var state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n if (args.requestType !== undefined && this.dataState.isDataChanged !== false) {\n state.action = args;\n if (args.requestType === 'save' || args.requestType === 'delete') {\n var editArgs_1 = args;\n editArgs_1.key = key;\n var promise = 'promise';\n editArgs_1[\"\" + promise] = deff.promise;\n editArgs_1.state = state;\n this.setState({ isPending: true, resolver: deff.resolve });\n dataArgs.endEdit = deff.resolve;\n dataArgs.cancelEdit = deff.reject;\n this.parent.trigger(events.dataSourceChanged, editArgs_1);\n deff.promise.then(function () {\n _this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n if (editArgs_1.requestType === 'save') {\n _this.parent.notify(events.recordAdded, editArgs_1);\n }\n _this.parent.trigger(events.dataStateChange, state);\n })\n .catch(function () { return void 0; });\n }\n else {\n this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n this.parent.trigger(events.dataStateChange, state);\n }\n }\n else {\n this.setState({});\n def.resolve(this.parent.dataSource);\n }\n return def;\n };\n /**\n * Gets the columns where searching needs to be performed from the Grid.\n *\n * @returns {string[]} returns the searched column field names\n */\n Data.prototype.getSearchColumnFieldNames = function () {\n var colFieldNames = [];\n var columns = this.parent.getColumns();\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var col = columns_2[_i];\n if (col.allowSearching && !isNullOrUndefined(col.field)) {\n colFieldNames.push(col.field);\n }\n }\n return colFieldNames;\n };\n Data.prototype.refreshFilteredCols = function () {\n if (this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n refreshFilteredColsUid(this.parent, this.parent.filterSettings.columns);\n }\n };\n return Data;\n}());\nexport { Data };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, getValue, closest } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { appendChildren } from '../base/util';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport * as events from '../base/constant';\n/**\n * FilterCellRenderer class which responsible for building filter cell.\n *\n * @hidden\n */\nvar FilterCellRenderer = /** @class */ (function (_super) {\n __extends(FilterCellRenderer, _super);\n function FilterCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-filterbarcell' });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string} returns the gui\n */\n FilterCellRenderer.prototype.getGui = function () {\n return this.parent.createElement('div');\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell\n * @param {Object} data\n */\n /* tslint:disable-next-line:max-func-body-length */\n FilterCellRenderer.prototype.render = function (cell, data) {\n var tr = this.parent.element.querySelector('.e-filterbar');\n var node = this.element.cloneNode();\n var innerDIV = this.getGui();\n var input;\n var column = cell.column;\n tr.appendChild(node);\n node.setAttribute('e-mappinguid', column.uid);\n if (column.filterTemplate) {\n var fltrData = {};\n if (data) {\n fltrData[column.field] = data[column.field];\n }\n var col = 'column';\n fltrData[\"\" + col] = column;\n if (column.visible) {\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else {\n var element = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(node, element);\n }\n }\n else {\n node.classList.add('e-hide');\n }\n }\n else {\n if (column.type !== 'checkbox') {\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n node.classList.add('e-fltrtemp');\n attributes(innerDIV, {\n 'class': 'e-fltrtempdiv'\n });\n if (isNullOrUndefined(column.filterBarTemplate.create)) {\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filterUi_input e-filtertext e-fltrTemp',\n attrs: { type: 'search', title: column.headerText }\n });\n innerDIV.appendChild(input);\n }\n else {\n var args = { column: column, node: Element };\n var temp = column.filterBarTemplate.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n input = temp(args);\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n attributes(innerDIV, {\n class: 'e-filterUi_input e-filtertext e-fltrTemp',\n title: column.headerText,\n id: column.field + '_filterBarcell'\n });\n innerDIV.appendChild(input);\n }\n }\n else {\n attributes(innerDIV, {\n 'class': 'e-filterdiv e-fltrinputdiv'\n });\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filtertext',\n attrs: {\n type: 'search', title: column.headerText + cell.attributes.title,\n value: data[cell.column.field] ? data[cell.column.field] : '', role: 'search'\n }\n });\n innerDIV.appendChild(input);\n var args = {\n element: input, floatLabelType: 'Never',\n properties: {\n enableRtl: this.parent.enableRtl, showClearButton: true, cssClass: this.parent.cssClass\n }\n };\n Input.createInput(args, this.parent.createElement);\n }\n //TODO: apply intial filtering\n if (column.allowFiltering === false || column.field === '' || isNullOrUndefined(column.field)) {\n input.setAttribute('disabled', 'true');\n input.classList.add('e-disable');\n }\n var clearIconElem = innerDIV.querySelector('.e-clear-icon');\n if (clearIconElem) {\n clearIconElem.setAttribute('title', this.parent.localeObj.getConstant('ClearButton'));\n }\n if (!column.visible) {\n node.classList.add('e-hide');\n }\n this.appendHtml(node, innerDIV);\n // render's the dropdownlist component if showFilterBarOperator sets to true\n if (this.parent.filterSettings.showFilterBarOperator && this.parent.filterSettings.type === 'FilterBar' &&\n !this.parent.isPrinting && isNullOrUndefined(column.filterTemplate) && isNullOrUndefined(column.filterBarTemplate)) {\n this.operatorIconRender(innerDIV, column, cell);\n }\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n var templateWrite = column.filterBarTemplate.write;\n var args = { element: input, column: column };\n if (typeof templateWrite === 'string') {\n templateWrite = getValue(templateWrite, window);\n }\n templateWrite.call(this, args);\n }\n }\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @returns {Element} retruns the element\n */\n FilterCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n FilterCellRenderer.prototype.operatorIconRender = function (innerDIV, column, cell) {\n var gObj = this.parent;\n var operators;\n var fbicon = this.parent.createElement('input', {\n className: ' e-filterbaroperator e-icons e-icon-filter',\n id: cell.column.uid\n });\n innerDIV.querySelector('span').appendChild(fbicon);\n if (column.filter && column.filter.operator) {\n operators = column.filter.operator;\n }\n else if (gObj.filterSettings.columns.length) {\n for (var i = 0, a = gObj.filterSettings.columns; i < a.length; i++) {\n var col = a[parseInt(i.toString(), 10)];\n if (col.field === column.field) {\n operators = col.operator;\n }\n else {\n operators = 'equal';\n }\n }\n }\n else {\n operators = 'equal';\n }\n if (!isNullOrUndefined(gObj.filterModule.operators[column.field])) {\n operators = gObj.filterModule.operators[column.field];\n }\n this.dropOptr = new DropDownList({\n fields: { text: 'text', value: 'value' },\n popupHeight: 'auto',\n value: operators,\n width: '0px',\n enabled: column.allowFiltering,\n popupWidth: 'auto',\n enableRtl: this.parent.enableRtl,\n change: this.internalEvent.bind(this),\n beforeOpen: function () {\n var operator = gObj.filterModule.customOperators;\n this.dataSource = operator[gObj.getColumnByUid(this.element.id).type + 'Operator'];\n for (var i = 0; i < this.dataSource.length; i++) {\n if (column.filter && column.filter.operator && isNullOrUndefined(gObj.filterModule.operators[column.field]) &&\n this.dataSource[parseInt(i.toString(), 10)].value === column.filter.operator) {\n this.value = column.filter.operator;\n }\n }\n },\n cssClass: this.parent.cssClass ? 'e-popup-flbar' + ' ' + this.parent.cssClass : 'e-popup-flbar'\n });\n this.dropOptr.appendTo(fbicon);\n var spanElmt = closest(this.dropOptr.element, 'span');\n spanElmt.classList.add('e-filterbardropdown');\n spanElmt.removeAttribute('tabindex');\n };\n FilterCellRenderer.prototype.internalEvent = function (e) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(e.element.getAttribute('id'));\n e.column = col;\n gObj.filterModule.operators[col.field] = e.value;\n gObj.notify(events.getFilterBarOperator, e);\n };\n return FilterCellRenderer;\n}(CellRenderer));\nexport { FilterCellRenderer };\n","import { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `filter operators` render boolean column.\n *\n * @hidden\n */\nvar FlMenuOptrUI = /** @class */ (function () {\n function FlMenuOptrUI(parent, customFltrOperators, serviceLocator, filterSettings) {\n this.ddOpen = this.dropDownOpen.bind(this);\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n this.customFilterOperators = customFltrOperators;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroyDropDownList, this);\n this.parent.on(events.destroy, this.destroyDropDownList, this);\n }\n }\n /**\n * @param {Element} dlgConetntEle - specifies the content element\n * @param {Element} target - specifies the target\n * @param {Column} column - specifies the column\n * @param {Dialog} dlgObj - specifies the dialog\n * @param {Object[]} operator - specifies the operator list\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line max-len\n FlMenuOptrUI.prototype.renderOperatorUI = function (dlgConetntEle, target, column, dlgObj, operator) {\n this.dialogObj = dlgObj;\n var optr = column.type + 'Operator';\n this.optrData = this.customOptr = !isNullOrUndefined(operator) ? operator :\n (!isNullOrUndefined(this.parent.filterSettings.operators) && !isNullOrUndefined(this.parent.filterSettings.operators[\"\" + optr])) ?\n this.parent.filterSettings.operators[\"\" + optr] : this.customFilterOperators[\"\" + optr];\n var dropDatasource = this.customOptr;\n var selectedValue = this.dropSelectedVal(column, optr);\n var optrDiv = this.parent.createElement('div', { className: 'e-flm_optrdiv' });\n dlgConetntEle.appendChild(optrDiv);\n var optrInput = this.parent.createElement('input', { id: column.uid + '-floptr' });\n optrDiv.appendChild(optrInput);\n this.dropOptr = new DropDownList({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n enableRtl: this.parent.enableRtl,\n text: selectedValue,\n // eslint-disable-next-line @typescript-eslint/tslint/config\n change: function () {\n var valInput = document.querySelector('.e-flmenu-valuediv').querySelector('input');\n if (this.value === 'isempty' || this.value === 'isnotempty' ||\n this.value === 'isnull' || this.value === 'isnotnull') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n }\n });\n this.dropOptr.addEventListener(literals['open'], this.ddOpen);\n this.dropOptr.appendTo('#' + column.uid + '-floptr');\n };\n FlMenuOptrUI.prototype.renderResponsiveDropDownList = function (args) {\n args.popup.element.style.width = '100%';\n };\n FlMenuOptrUI.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n if (this.parent.enableAdaptiveUI) {\n this.renderResponsiveDropDownList(args);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FlMenuOptrUI.prototype.dropSelectedVal = function (col, optr) {\n var selValue = '';\n var columns = this.parent.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.field === column.field || (col.isForeignColumn() && col.foreignKeyValue === column.field)) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', column.operator));\n selValue = !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n }\n }\n if (selValue === '') { // rewuired or not\n if (col.filter.operator) {\n var optrLen = Object.keys(this.optrData).length;\n for (var i = 0; i < optrLen; i++) {\n if (this.optrData[parseInt(i.toString(), 10)].value === col.filter.operator) {\n selValue = this.optrData[parseInt(i.toString(), 10)].text;\n }\n }\n }\n else {\n selValue = this.optrData[0].text;\n }\n }\n return selValue;\n };\n /**\n * @returns {string} returns the operator\n * @hidden\n */\n FlMenuOptrUI.prototype.getFlOperator = function () {\n return this.dropOptr.value;\n };\n FlMenuOptrUI.prototype.destroyDropDownList = function () {\n if (this.dropOptr.isDestroyed) {\n return;\n }\n this.dropOptr.removeEventListener(literals['open'], this.ddOpen);\n this.dropOptr.destroy();\n this.parent.off(events.filterMenuClose, this.destroyDropDownList);\n this.parent.off(events.destroy, this.destroyDropDownList);\n };\n return FlMenuOptrUI;\n}());\nexport { FlMenuOptrUI };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Event, addClass, Browser, removeClass, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, NotifyPropertyChanges, getValue, setValue } from '@syncfusion/ej2-base';\nimport { DropDownList, dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { Search } from '../common/incremental-search';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```html\n * \n * ```\n * ```typescript\n * let games:ComboBox = new ComboBox();\n * games.appendTo(\"#list\");\n * ```\n */\nvar ComboBox = /** @class */ (function (_super) {\n __extends(ComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {ComboBoxModel} options - Specifies the ComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function ComboBox(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n ComboBox.prototype.getLocaleName = function () {\n return 'combo-box';\n };\n ComboBox.prototype.wireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputWrapper.container, 'blur', this.onBlurHandler, this);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(this.inputElement, 'focus', this.targetFocus, this);\n if (!this.readonly) {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n }\n this.bindCommonEvent();\n };\n ComboBox.prototype.preventBlur = function (e) {\n if ((!this.allowFiltering && document.activeElement !== this.inputElement &&\n !document.activeElement.classList.contains(dropDownListClasses.input) && Browser.isDevice || !Browser.isDevice)) {\n e.preventDefault();\n }\n };\n ComboBox.prototype.onBlurHandler = function (e) {\n var inputValue = this.inputElement && this.inputElement.value === '' ?\n null : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== this.text) {\n this.customValue(e);\n }\n _super.prototype.onBlurHandler.call(this, e);\n };\n ComboBox.prototype.targetElement = function () {\n return this.inputElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldText = function (text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldValue = function (value) {\n if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value, text: value, index: null }, true);\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if (this.previousValue !== this.value) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n var li = this.getElementByValue(this.value);\n if (li) {\n this.setSelection(li, null);\n }\n else if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly.toString(),\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n };\n ComboBox.prototype.searchLists = function (e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n _super.prototype.searchLists.call(this, e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n }\n else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n };\n ComboBox.prototype.getNgDirective = function () {\n return 'EJS-COMBOBOX';\n };\n ComboBox.prototype.setSearchBox = function () {\n this.filterInput = this.inputElement;\n var searchBoxContainer = (this.isFiltering() || (this.isReact && this.getModuleName() === 'combobox')) ? this.inputWrapper : inputObject;\n return searchBoxContainer;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped) {\n setTimeout(function () {\n _this.inlineSearch();\n });\n }\n };\n ComboBox.prototype.getFocusElement = function () {\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : this.list;\n var isSelected = dataItem.text === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) &&\n !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n var inputValue = this.inputElement.value;\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type);\n var activeElement = activeItem.item;\n if (!isNullOrUndefined(activeElement)) {\n var count = this.getIndexByValue(activeElement.getAttribute('data-value')) - 1;\n var height = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n if (!isNaN(height) && this.getModuleName() !== 'autocomplete') {\n this.removeFocus();\n var fixedHead = this.fields.groupBy ? this.liCollections[0].offsetHeight : 0;\n this.list.scrollTop = count * height + fixedHead;\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n this.list.scrollTop = 0;\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if (e && e.type === 'keydown' && e.action === 'enter') {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': dataItem.value }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && this.previousValue !== currentFillValue) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n }\n else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue, isHover);\n }\n }\n };\n ComboBox.prototype.isAndroidAutoFill = function (value) {\n if (Browser.isAndroid) {\n var currentPoints = this.getSelectionPoints();\n var prevEnd = this.prevSelectPoints.end;\n var curEnd = currentPoints.end;\n var prevStart = this.prevSelectPoints.start;\n var curStart = currentPoints.start;\n if (prevEnd !== 0 && ((prevEnd === value.length && prevStart === value.length) ||\n (prevStart > curStart && prevEnd > curEnd) || (prevEnd === curEnd && prevStart === curStart))) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n ComboBox.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.isFiltering() && !isNullOrUndefined(e) && e.target === this.inputWrapper.clearButton) {\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n this.list.scrollTop = 0;\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length > 0 && !this.isCustomFilter) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup(e);\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ComboBox.prototype.setAutoFillSelection = function (currentValue, isKeyNavigate) {\n if (isKeyNavigate === void 0) { isKeyNavigate = false; }\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else if (isKeyNavigate) {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value.trim() === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup(e);\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.autofill && previousValue === this.value && currentValue !== this.value) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value.trim() !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n // eslint-disable-next-line max-len\n var eventArgs = { text: value_1, item: {} };\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n }\n else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n }\n else {\n this.isSelectCustom = false;\n this.setProperties({ value: value });\n if (previousValue_1 !== this.value) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n if (previousValue !== this.value) {\n this.onChangeEvent(e);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n this.setReadOnly();\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default: {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n this.renderComplete();\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n ComboBox.prototype.getModuleName = function () {\n return 'combobox';\n };\n /**\n * Adds a new item to the combobox popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n\n */\n ComboBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n ComboBox.prototype.filter = function (dataSource, query, fields) {\n _super.prototype.filter.call(this, dataSource, query, fields);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.showPopup.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n var inputValue = this.inputElement && this.inputElement.value === '' ? null\n : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData)) {\n var isEscape = this.isEscapeKey;\n if (this.isEscapeKey) {\n Input.setValue(this.typedString, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n }\n if (this.autofill) {\n this.removeFillSelection();\n }\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : null;\n if (this.inputElement && dataItem.text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n _super.prototype.hidePopup.call(this, e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true, dataSource, this.fields, type);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true, dataSource, this.fields, type).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n }\n else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== this.value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n *\n * @returns {void}\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.focusOut.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n\n */\n ComboBox.prototype.getItems = function () {\n return _super.prototype.getItems.call(this);\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search\n };\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"index\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"enableRtl\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property('Never')\n ], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"value\", void 0);\n ComboBox = __decorate([\n NotifyPropertyChanges\n ], ComboBox);\n return ComboBox;\n}(DropDownList));\nexport { ComboBox };\n","/**\n * Function helps to find which highlightSearch is to call based on your data.\n *\n * @param {HTMLElement} element - Specifies an li element.\n * @param {string} query - Specifies the string to be highlighted.\n * @param {boolean} ignoreCase - Specifies the ignoreCase option.\n * @param {HightLightType} type - Specifies the type of highlight.\n * @returns {void}\n */\nexport function highlightSearch(element, query, ignoreCase, type) {\n if (query === '') {\n return;\n }\n else {\n var ignoreRegex = ignoreCase ? 'gim' : 'gm';\n // eslint-disable-next-line\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n var replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ?\n '(' + query + ')$' : '(' + query + ')';\n // eslint-disable-next-line security/detect-non-literal-regexp\n findTextNode(element, new RegExp(replaceQuery, ignoreRegex));\n }\n}\n/* eslint-enable jsdoc/require-param, valid-jsdoc */\n/**\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {RegExp} pattern - Specifies the regex to match the searched text.\n * @returns {void}\n */\nfunction findTextNode(element, pattern) {\n for (var index = 0; element.childNodes && (index < element.childNodes.length); index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n var value = element.childNodes[index].nodeValue.trim().replace(pattern, '$1');\n element.childNodes[index].nodeValue = '';\n element.innerHTML = element.innerHTML.trim() + value;\n break;\n }\n else {\n findTextNode(element.childNodes[index], pattern);\n }\n }\n}\n/**\n * Function helps to remove highlighted element based on your data.\n *\n * @param {HTMLElement} content - Specifies an content element.\n * @returns {void}\n */\nexport function revertHighlightSearch(content) {\n var contentElement = content.querySelectorAll('.e-highlight');\n for (var i = contentElement.length - 1; i >= 0; i--) {\n var parent_1 = contentElement[i].parentNode;\n var text = document.createTextNode(contentElement[i].textContent);\n parent_1.replaceChild(text, contentElement[i]);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Property, EventHandler, isNullOrUndefined, detach } from '@syncfusion/ej2-base';\nimport { Event, Complex } from '@syncfusion/ej2-base';\nimport { removeClass, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { ComboBox } from '../combo-box/combo-box';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\nimport { Search } from '../common/incremental-search';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\ndropDownListClasses.root = 'e-autocomplete';\ndropDownListClasses.icon = 'e-input-group-icon e-ddl-icon e-search-icon';\n/**\n * The AutoComplete component provides the matched suggestion list when type into the input,\n * from which the user can select one.\n * ```html\n * \n * ```\n * ```typescript\n * let atcObj:AutoComplete = new AutoComplete();\n * atcObj.appendTo(\"#list\");\n * ```\n */\nvar AutoComplete = /** @class */ (function (_super) {\n __extends(AutoComplete, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {AutoCompleteModel} options - Specifies the AutoComplete model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function AutoComplete(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isFiltered = false;\n _this_1.searchList = false;\n return _this_1;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n AutoComplete.prototype.getLocaleName = function () {\n return 'auto-complete';\n };\n AutoComplete.prototype.getNgDirective = function () {\n return 'EJS-AUTOCOMPLETE';\n };\n AutoComplete.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = (this.queryString === '' && !isNullOrUndefined(this.value)) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.value)) ? this.value : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.value) ? this.fields.value : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount)) {\n // Since defualt value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n return filterQuery;\n };\n AutoComplete.prototype.searchLists = function (e) {\n var _this_1 = this;\n this.isTyped = true;\n this.isDataFetched = this.isSelectCustom = false;\n if (isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this, e, true);\n }\n this.queryString = this.filterInput.value;\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields, null, e);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this_1.isFiltered = true;\n _this_1.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this_1.isFiltered && !eventArgs.preventDefaultAction) {\n _this_1.searchList = true;\n _this_1.filterAction(_this_1.dataSource, null, _this_1.fields, e);\n }\n });\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n AutoComplete.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n };\n AutoComplete.prototype.filterAction = function (dataSource, query, fields, e) {\n this.beforePopupOpen = true;\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n this.resetList(dataSource, fields, query, e);\n }\n else {\n this.hidePopup(e);\n this.beforePopupOpen = false;\n }\n this.renderReactTemplates();\n };\n AutoComplete.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.beforePopupOpen) {\n this.hidePopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n this.fixedHeaderElement = null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n var item = this.list.querySelector('.' + dropDownListClasses.li);\n if (!isNullOrUndefined(item)) {\n removeClass([item], dropDownListClasses.focus);\n }\n this.postBackAction();\n };\n AutoComplete.prototype.postBackAction = function () {\n if (this.autofill && !isNullOrUndefined(this.liCollections[0]) && this.searchList) {\n var items = [this.liCollections[0]];\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, items, 'StartsWith', this.ignoreCase, dataSource, this.fields, type);\n this.searchList = false;\n if (!isNullOrUndefined(searchItem.item)) {\n _super.prototype.setAutoFill.call(this, this.liCollections[0], true);\n }\n }\n };\n AutoComplete.prototype.setSelection = function (li, e) {\n if (!this.isValidLI(li)) {\n this.selectedLI = li;\n return;\n }\n if (!isNullOrUndefined(e) && e.type === 'keydown' && e.action !== 'enter'\n && e.action !== 'tab' && this.isValidLI(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.setHoverList(li);\n this.selectedLI = li;\n this.setScrollPosition(e);\n if (this.autofill && this.isPopupOpen) {\n this.preventAutoFill = false;\n var isKeyNavigate = (e && e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown');\n _super.prototype.setAutoFill.call(this, li, isKeyNavigate);\n }\n }\n else {\n _super.prototype.setSelection.call(this, li, e);\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this_1 = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n if (_this_1.element.tagName === _this_1.getNgDirective() && _this_1.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n itemCreated_1.apply(_this_1, [e]);\n };\n }\n return fields;\n };\n AutoComplete.prototype.isFiltering = function () {\n return true;\n };\n AutoComplete.prototype.renderPopup = function (e) {\n this.list.scrollTop = 0;\n _super.prototype.renderPopup.call(this, e);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return true && this.inputElement.value.trim() !== '';\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n AutoComplete.prototype.setInputValue = function (newProp, oldProp) {\n var oldValue = oldProp && oldProp.text ? oldProp.text : oldProp ? oldProp.value : oldProp;\n var value = newProp && newProp.text ? newProp.text : newProp && newProp.value ? newProp.value : this.value;\n if (value && this.typedString === '' && !this.allowCustom && !(this.dataSource instanceof DataManager)) {\n var checkFields_1_1 = this.typeOfData(this.dataSource).typeof === 'string' ? '' : this.fields.value;\n var listLength_1 = this.getItems().length;\n var query = new Query();\n var _this_2 = this;\n new DataManager(this.dataSource).executeQuery(query.where(new Predicate(checkFields_1_1, 'equal', value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this_2.value = checkFields_1_1 !== '' ? e.result[0][_this_2.fields.value].toString() : e.result[0].toString();\n _this_2.addItem(e.result, listLength_1);\n _this_2.updateValues();\n }\n else {\n newProp && newProp.text ? _this_2.setOldText(oldValue) : newProp && newProp.value ? _this_2.setOldValue(oldValue) : _this_2.updateValues();\n }\n });\n }\n else if (newProp) {\n newProp.text ? this.setOldText(oldValue) : this.setOldValue(oldValue);\n }\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n\n */\n AutoComplete.prototype.showPopup = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list)) {\n this.renderList(e);\n }\n else {\n this.resetList(this.dataSource, this.fields, null, e);\n }\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n */\n AutoComplete.prototype.hidePopup = function (e) {\n _super.prototype.hidePopup.call(this, e);\n this.activeIndex = null;\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {AutoCompleteModel} newProp - Returns the dynamic property value of the component.\n * @param {AutoCompleteModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default: {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n }\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n __decorate([\n Complex({ value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], AutoComplete.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], AutoComplete.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"showPopupButton\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"highlight\", void 0);\n __decorate([\n Property(20)\n ], AutoComplete.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property({})\n ], AutoComplete.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"query\", void 0);\n __decorate([\n Property(1)\n ], AutoComplete.prototype, \"minLength\", void 0);\n __decorate([\n Property('Contains')\n ], AutoComplete.prototype, \"filterType\", void 0);\n __decorate([\n Event()\n ], AutoComplete.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], AutoComplete.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"text\", void 0);\n AutoComplete = __decorate([\n NotifyPropertyChanges\n ], AutoComplete);\n return AutoComplete;\n}(ComboBox));\nexport { AutoComplete };\n","import { AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { Browser, isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nimport { getZIndexCalcualtion, eventPromise } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * `string filterui` render string column.\n *\n * @hidden\n */\nvar StringFilterUI = /** @class */ (function () {\n function StringFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serLocator = serviceLocator;\n this.filterSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n StringFilterUI.prototype.create = function (args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'strui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.dialogObj = args.dialogObj;\n this.processDataOperation(args);\n };\n StringFilterUI.prototype.processDataOperation = function (args) {\n var _this = this;\n if (args.column.isForeignColumn()) {\n this.parent.getDataModule().dataManager.executeQuery(this.parent.getDataModule().generateQuery(true))\n .then(function (result) { _this.getAutoCompleteOptions(args, result); });\n return;\n }\n this.getAutoCompleteOptions(args);\n };\n StringFilterUI.prototype.getAutoCompleteOptions = function (args, result) {\n var isForeignColumn = args.column.isForeignColumn();\n var foreignColumnQuery;\n if (isForeignColumn) {\n var filteredData = CheckBoxFilterBase.getDistinct(result.result, args.column.field)\n .records || [];\n var filterQuery = void 0;\n for (var i = 0; i < filteredData.length; i++) {\n if (filterQuery) {\n filterQuery = filterQuery.or(args.column.field, 'contains', filteredData[parseInt(i.toString(), 10)][args.column.field], this.parent\n .filterSettings.enableCaseSensitivity, this.parent.filterSettings.ignoreAccent);\n }\n else {\n filterQuery = new Predicate(args.column.field, 'contains', filteredData[parseInt(i.toString(), 10)][args.column.field], this.parent\n .filterSettings.enableCaseSensitivity, this.parent.filterSettings.ignoreAccent);\n }\n }\n foreignColumnQuery = new Query().where(filterQuery);\n foreignColumnQuery.params = this.parent.query.params;\n }\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = { value: isForeignColumn ? args.column.foreignKeyValue : args.column.field };\n var autoComplete = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n query: isForeignColumn ? foreignColumnQuery : this.parent.getDataModule().generateQuery(true, true),\n sortOrder: 'Ascending',\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n autofill: true,\n placeholder: args.localizeText.getConstant('EnterValue'),\n actionBegin: function () {\n if (this.query.queries.length && this.query.queries[0].fn === 'onWhere' && this.query.queries[0].e\n && this.query.queries[0].e.predicates) {\n for (var i = 0; i < this.query.queries[0].e.predicates.length; i++) {\n if (this.properties.fields.value === this.query.queries[0].e.predicates[\"\" + i].field) {\n this.query.queries[0].e.predicates.splice(i, 1);\n i = i - 1;\n }\n }\n if (!this.query.queries[0].e.predicates.length) {\n this.query.queries.splice(0, 1);\n }\n }\n }\n }, args.column.filter.params));\n this.acFocus = this.focus(autoComplete, args);\n this.acComplete = this.actionComplete(autoComplete);\n this.acOpen = this.openPopup.bind(this);\n autoComplete.addEventListener(literals.focus, this.acFocus);\n autoComplete.addEventListener(literals['open'], this.acOpen);\n autoComplete.addEventListener(events.actionComplete, this.acComplete);\n if (dataSource && 'result' in dataSource) {\n var query = this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n autoComplete.dataSource = new DataManager(e);\n });\n }\n this.actObj = autoComplete;\n this.actObj.appendTo(this.instance);\n if (isForeignColumn) {\n this.parent.filterModule.filterModule.afterRenderFilterUI();\n }\n };\n StringFilterUI.prototype.write = function (args) {\n if (args.filteredValue !== '' && !isNullOrUndefined(args.filteredValue)) {\n var struiObj = document.querySelector('#strui-' + args.column.uid).ej2_instances[0];\n struiObj.value = args.filteredValue;\n }\n };\n StringFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var actuiObj = document.querySelector('#strui-' + column.uid).ej2_instances[0];\n if (Browser.isDevice) {\n actuiObj.hidePopup();\n actuiObj.focusOut();\n }\n var filterValue = actuiObj.value;\n if (isNullOrUndefined(filterValue) || filterValue === '') {\n filterValue = null;\n }\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', this.parent.filterSettings.enableCaseSensitivity);\n };\n StringFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n StringFilterUI.prototype.focus = function (actObj, args) {\n return function () {\n actObj.filterType = args.getOptrInstance.getFlOperator();\n };\n };\n StringFilterUI.prototype.actionComplete = function (actObj) {\n return function (e) {\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObj) {\n return (getValue(actObj.fields.value, mapObj));\n }).indexOf(getValue((actObj.fields.value), obj)) === index;\n });\n };\n };\n StringFilterUI.prototype.destroy = function () {\n if (!this.actObj || this.actObj.isDestroyed) {\n return;\n }\n this.actObj.removeEventListener(literals.focus, this.acFocus);\n this.actObj.removeEventListener(literals['open'], this.acOpen);\n this.actObj.removeEventListener(events.actionComplete, this.acComplete);\n this.actObj.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return StringFilterUI;\n}());\nexport { StringFilterUI };\n","import { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { extend, isUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\n/**\n * `numberfilterui` render number column.\n *\n * @hidden\n */\nvar NumberFilterUI = /** @class */ (function () {\n function NumberFilterUI(parent, serviceLocator, filterSettings) {\n this.filterSettings = filterSettings;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n NumberFilterUI.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n NumberFilterUI.prototype.create = function (args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'numberui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.numericTxtObj = new NumericTextBox(extend({\n format: typeof (args.column.format) === 'string' || isUndefined(args.column.format) ? args.column.format :\n args.column.format.format,\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('EnterValue'),\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n this.numericTxtObj.appendTo(this.instance);\n };\n NumberFilterUI.prototype.write = function (args) {\n var numberuiObj = document.querySelector('#numberui-' + args.column.uid).ej2_instances[0];\n numberuiObj.element.addEventListener('keydown', this.keyEventHandler);\n numberuiObj.value = args.filteredValue;\n };\n NumberFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var numberuiObj = document.querySelector('#numberui-' + column.uid).ej2_instances[0];\n var filterValue = numberuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n NumberFilterUI.prototype.destroy = function () {\n if (!this.numericTxtObj || this.numericTxtObj.isDestroyed) {\n return;\n }\n this.numericTxtObj.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return NumberFilterUI;\n}());\nexport { NumberFilterUI };\n","import { getZIndexCalcualtion } from '../base/util';\nimport { Query, DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `boolfilterui` render boolean column.\n *\n * @hidden\n */\nvar BooleanFilterUI = /** @class */ (function () {\n function BooleanFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n BooleanFilterUI.prototype.create = function (args) {\n var isForeignColumn = args.column.isForeignColumn();\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = isForeignColumn ? args.column.foreignKeyValue : args.column.field;\n this.elem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'bool-ui-' + args.column.uid });\n args.target.appendChild(this.elem);\n this.dialogObj = args.dialogObj;\n this.dropInstance = new DropDownList(extend({\n dataSource: dataSource instanceof DataManager ?\n dataSource : new DataManager(dataSource),\n query: new Query().select(fields),\n fields: { text: fields, value: fields },\n placeholder: args.localizeText.getConstant('SelectValue'),\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n this.ddOpen = this.openPopup.bind(this);\n this.ddComplete = this.actionComplete(fields);\n this.dropInstance.addEventListener(literals['open'], this.ddOpen);\n this.dropInstance.addEventListener(events.actionComplete, this.ddComplete);\n this.dropInstance.appendTo(this.elem);\n };\n BooleanFilterUI.prototype.write = function (args) {\n var drpuiObj = document.querySelector('#bool-ui-' + args.column.uid).ej2_instances[0];\n if (!isNullOrUndefined(args.filteredValue)) {\n drpuiObj.value = args.filteredValue;\n }\n };\n BooleanFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var drpuiObj = document.querySelector('#bool-ui-' + column.uid).ej2_instances[0];\n var filterValue = drpuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', false);\n };\n BooleanFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n BooleanFilterUI.prototype.actionComplete = function (fields) {\n return function (e) {\n e.result = DataUtil.distinct(e.result, fields, true);\n };\n };\n BooleanFilterUI.prototype.destroy = function () {\n if (!this.dropInstance || this.dropInstance.isDestroyed) {\n return;\n }\n this.dropInstance.removeEventListener(literals['open'], this.ddOpen);\n this.dropInstance.removeEventListener(events.actionComplete, this.ddComplete);\n this.dropInstance.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return BooleanFilterUI;\n}());\nexport { BooleanFilterUI };\n","import { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { getCustomDateFormat } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `datefilterui` render date column.\n *\n * @hidden\n */\nvar DateFilterUI = /** @class */ (function () {\n function DateFilterUI(parent, serviceLocator, filterSettings) {\n this.dpOpen = this.openPopup.bind(this);\n this.parent = parent;\n this.locator = serviceLocator;\n this.fltrSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n DateFilterUI.prototype.create = function (args) {\n var format = getCustomDateFormat(args.column.format, args.column.type);\n this.dialogObj = args.dialogObj;\n this.inputElem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'dateui-' + args.column.uid });\n args.target.appendChild(this.inputElem);\n if (args.column.type === 'date' || args.column.type === 'dateonly') {\n this.datePickerObj = new DatePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n else if (args.column.type === 'datetime') {\n this.datePickerObj = new DateTimePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n this.datePickerObj.addEventListener(literals['open'], this.dpOpen);\n this.datePickerObj.appendTo(this.inputElem);\n };\n DateFilterUI.prototype.write = function (args) {\n var dateuiObj = document.querySelector('#dateui-' + args.column.uid).ej2_instances[0];\n dateuiObj.value = !isNullOrUndefined(args.filteredValue) ? new Date(args.filteredValue) : null;\n };\n DateFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var dateuiObj = document.querySelector('#dateui-' + column.uid).ej2_instances[0];\n var filterValue = dateuiObj.value;\n filterValue = isNullOrUndefined(filterValue) ? null : filterValue;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n DateFilterUI.prototype.openPopup = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n DateFilterUI.prototype.destroy = function () {\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n if (isNullOrUndefined(this.datePickerObj) || this.datePickerObj.isDestroyed) {\n return;\n }\n this.datePickerObj.removeEventListener(literals['open'], this.dpOpen);\n this.datePickerObj.destroy();\n };\n return DateFilterUI;\n}());\nexport { DateFilterUI };\n","import { isNullOrUndefined, getValue, remove } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { FlMenuOptrUI } from './filter-menu-operator';\nimport { StringFilterUI } from './string-filter-ui';\nimport { NumberFilterUI } from './number-filter-ui';\nimport { BooleanFilterUI } from './boolean-filter-ui';\nimport { DateFilterUI } from './date-filter-ui';\nimport { getFilterMenuPostion, parentsUntil, appendChildren, clearReactVueTemplates } from '../base/util';\nimport * as events from '../base/constant';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * `filter menu` render boolean column.\n *\n * @hidden\n */\nvar FilterMenuRenderer = /** @class */ (function () {\n function FilterMenuRenderer(parent, filterSettings, serviceLocator, customFltrOperators, fltrObj) {\n this.isDialogOpen = false;\n this.maxHeight = '350px';\n this.isMenuCheck = false;\n this.colTypes = {\n 'string': StringFilterUI, 'number': NumberFilterUI, 'date': DateFilterUI, 'dateonly': DateFilterUI, 'boolean': BooleanFilterUI, 'datetime': DateFilterUI\n };\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.customFilterOperators = customFltrOperators;\n this.filterObj = fltrObj;\n this.flMuiObj = new FlMenuOptrUI(this.parent, this.customFilterOperators, this.serviceLocator);\n this.l10n = this.serviceLocator.getService('localization');\n this.menuFilterBase = new CheckBoxFilterBase(parent);\n }\n FilterMenuRenderer.prototype.clearCustomFilter = function (col) {\n this.clearBtnClick(col);\n };\n FilterMenuRenderer.prototype.applyCustomFilter = function (args) {\n this.filterBtnClick(args.col);\n };\n FilterMenuRenderer.prototype.openDialog = function (args) {\n this.options = args;\n this.col = this.parent.getColumnByField(args.field);\n if (isNullOrUndefined(this.col.filter) || (isNullOrUndefined(this.col.filter.type) || this.col.filter.type === 'Menu')) { ///\n this.renderDlgContent(args.target, this.col);\n }\n };\n FilterMenuRenderer.prototype.closeDialog = function (target) {\n if (!this.dlgObj) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\n }\n var elem = document.getElementById(this.dlgObj.element.id);\n if (this.dlgObj && !this.dlgObj.isDestroyed && elem) {\n var argument = { cancel: false, column: this.col, target: target, element: elem };\n this.parent.notify(events.filterMenuClose, argument);\n if (argument.cancel) {\n return;\n }\n this.isDialogOpen = false;\n if (this.isMenuCheck) {\n this.menuFilterBase.unWireEvents();\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.isMenuCheck = false;\n }\n this.dlgObj.destroy();\n remove(elem);\n }\n this.parent.notify(events.filterDialogClose, {});\n };\n FilterMenuRenderer.prototype.renderDlgContent = function (target, column) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.trigger(events.actionBegin, args);\n var mainDiv = this.parent.createElement('div', { className: 'e-flmenu-maindiv', id: column.uid + '-flmenu' });\n this.dlgDiv = this.parent.createElement('div', { className: 'e-flmenu', id: column.uid + '-flmdlg' });\n this.dlgDiv.setAttribute('aria-label', this.l10n.getConstant('FilterMenuDialogARIA'));\n if (this.parent.enableAdaptiveUI) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n showCloseIcon: false,\n closeOnEscape: false,\n locale: this.parent.locale,\n visible: false,\n enableRtl: this.parent.enableRtl,\n created: this.dialogCreated.bind(this, target, column),\n position: this.parent.element.classList.contains('e-device') ? { X: 'center', Y: 'center' } : { X: '', Y: '' },\n target: this.parent.element.classList.contains('e-device') ? document.body : this.parent.element,\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.l10n.getConstant('FilterButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-flmenu-okbtn' + ' ' + this.parent.cssClass : 'e-flmenu-okbtn'\n }\n },\n {\n click: this.clearBtnClick.bind(this, column),\n buttonModel: { content: this.l10n.getConstant('ClearButton'),\n cssClass: this.parent.cssClass ? 'e-flmenu-cancelbtn' + ' ' + this.parent.cssClass : 'e-flmenu-cancelbtn' }\n }],\n content: mainDiv,\n width: (!isNullOrUndefined(parentsUntil(target, 'e-bigger'))) || this.parent.element.classList.contains('e-device') ? 260 : 250,\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? 'e-filter-popup' + ' ' + this.parent.cssClass : 'e-filter-popup'\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgObj.appendTo(this.dlgDiv);\n };\n FilterMenuRenderer.prototype.renderResponsiveDialog = function () {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.buttons = [{}];\n }\n };\n FilterMenuRenderer.prototype.dialogCreated = function (target, column) {\n if (!Browser.isDevice && target) {\n getFilterMenuPostion(target, this.dlgObj);\n }\n this.currentDialogCreatedColumn = column;\n this.renderFilterUI(target, column);\n if (!(column.isForeignColumn() && !(!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)))) {\n this.afterRenderFilterUI();\n }\n };\n /**\n * Function to notify filterDialogCreated and trigger actionComplete\n *\n * @returns {void}\n * @hidden\n */\n FilterMenuRenderer.prototype.afterRenderFilterUI = function () {\n var column = this.currentDialogCreatedColumn;\n if (column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, {});\n }\n if (this.parent.enableAdaptiveUI) {\n this.dlgObj.element.style.left = '0px';\n this.dlgObj.element.style.maxHeight = 'none';\n }\n else {\n this.dlgObj.element.style.maxHeight = this.maxHeight;\n }\n this.dlgObj.show();\n var optrInput = this.dlgObj.element.querySelector('.e-flm_optrdiv').querySelector('input');\n var valInput = this.dlgObj.element.querySelector('.e-flmenu-valuediv').querySelector('input');\n if (optrInput.value === 'Empty' || optrInput.value === 'Not Empty' ||\n optrInput.value === 'Null' || optrInput.value === 'Not Null') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput && valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n if (!column.filterTemplate) {\n this.writeMethod(column, this.dlgObj.element.querySelector('#' + column.uid + '-flmenu'));\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.isDialogOpen = true;\n if (!this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n FilterMenuRenderer.prototype.renderFilterUI = function (target, col) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-flmenu-maindiv');\n this.parent.log('column_type_missing', { column: col });\n this.renderOperatorUI(dlgConetntEle, target, col);\n this.renderFlValueUI(dlgConetntEle, target, col);\n };\n FilterMenuRenderer.prototype.renderOperatorUI = function (dlgConetntEle, target, column) {\n this.flMuiObj.renderOperatorUI(dlgConetntEle, target, column, this.dlgObj, this.filterObj.menuOperator);\n };\n FilterMenuRenderer.prototype.renderFlValueUI = function (dlgConetntEle, target, column) {\n var valueDiv = this.parent.createElement('div', { className: 'e-flmenu-valuediv' });\n var fObj = this.filterObj;\n dlgConetntEle.appendChild(valueDiv);\n var instanceofFilterUI = new this.colTypes[column.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (column.filterTemplate) {\n var fltrData = {};\n var valueInString = 'value';\n fltrData[column.field] = fltrData[\"\" + valueInString] = fObj.values[column.field];\n if (column.foreignKeyValue) {\n fltrData[column.foreignKeyValue] = fObj.values[column.field];\n fltrData[column.field] = undefined;\n }\n var col = 'column';\n fltrData[\"\" + col] = column;\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n this.parent.renderTemplates();\n }\n else {\n var compElement = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, compElement);\n }\n if (this.isMenuCheck) {\n this.menuFilterBase.cBox = this.dlgObj.element.querySelector('.e-checkboxlist.e-fields');\n this.menuFilterBase.wireEvents();\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.menuFilterBase.getAllData();\n }\n }\n else {\n if (!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)) {\n var temp = column.filter.ui.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, dialogObj: this.dlgObj\n });\n }\n else {\n instanceofFilterUI.create({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, localizeText: this.l10n, dialogObj: this.dlgObj\n });\n }\n }\n };\n FilterMenuRenderer.prototype.writeMethod = function (col, dlgContentEle) {\n var flValue;\n var target = dlgContentEle.querySelector('.e-flmenu-valinput');\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.uid === column.uid) {\n flValue = column.value;\n }\n }\n if (!isNullOrUndefined(col.filter) && !isNullOrUndefined(col.filter.ui)\n && !isNullOrUndefined(col.filter.ui.write)) {\n var temp = col.filter.ui.write;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n else {\n instanceofFilterUI.write({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n };\n FilterMenuRenderer.prototype.filterBtnClick = function (col) {\n var flValue;\n var targ = this.dlgObj.element.querySelector('.e-flmenu-valuediv input');\n var flOptrValue = this.flMuiObj.getFlOperator();\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (col.filterTemplate) {\n var element = this.dlgDiv.querySelector('.e-flmenu-valuediv');\n var fltrValue = void 0;\n if (element.children[0].value) {\n fltrValue = element.children[0].value;\n }\n else {\n if (!isNullOrUndefined(element.children[0].ej2_instances)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fltrValue = (this.parent.isAngular ? element.children[0] :\n element.querySelector('input')).ej2_instances[0].value;\n }\n else {\n var eControl = element.querySelector('.e-control');\n if (!isNullOrUndefined(eControl)) {\n fltrValue = col.type === 'boolean' ? eControl.checked :\n !isNullOrUndefined(eControl.ej2_instances) ?\n eControl.ej2_instances[0].value :\n eControl.value;\n }\n }\n }\n this.filterObj.filterByColumn(col.field, flOptrValue, fltrValue);\n }\n else {\n if (!isNullOrUndefined(col.filter) &&\n !isNullOrUndefined(col.filter.ui) && !isNullOrUndefined(col.filter.ui.read)) {\n var temp = col.filter.ui.read;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n // eslint-disable-next-line\n flValue = temp({ element: targ, column: col, operator: flOptrValue, fltrObj: this.filterObj });\n }\n else {\n instanceofFilterUI.read(targ, col, flOptrValue, this.filterObj);\n }\n }\n this.closeDialog();\n if (this.parent.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n FilterMenuRenderer.prototype.closeResponsiveDialog = function () {\n this.closeDialog();\n };\n FilterMenuRenderer.prototype.clearBtnClick = function (column) {\n this.filterObj.removeFilteredColsByField(column.field);\n this.closeDialog();\n var iconClass = this.parent.showColumnMenu && column.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var col = this.parent.element.querySelector('[e-mappinguid=\"' + column.uid + '\"]').parentElement;\n var flIcon = col.querySelector(iconClass);\n if (flIcon) {\n flIcon.classList.remove('e-filtered');\n }\n };\n FilterMenuRenderer.prototype.destroy = function () {\n this.closeDialog();\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n FilterMenuRenderer.prototype.getFilterUIInfo = function () {\n return { field: this.col.field, operator: this.flMuiObj.getFlOperator() };\n };\n FilterMenuRenderer.prototype.renderCheckBoxMenu = function () {\n this.isMenuCheck = true;\n this.menuFilterBase.updateModel(this.options);\n this.menuFilterBase.getAndSetChkElem(this.options);\n this.dlgObj.buttons = [{\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: {\n content: this.menuFilterBase.getLocalizedLabel('FilterButton'),\n cssClass: 'e-primary', isPrimary: true\n }\n },\n {\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: { cssClass: 'e-flat', content: this.menuFilterBase.getLocalizedLabel('ClearButton') }\n }];\n this.menuFilterBase.dialogObj = this.dlgObj;\n this.menuFilterBase.dlg = this.dlgObj.element;\n this.menuFilterBase.dlg.classList.add('e-menucheckbox');\n this.menuFilterBase.dlg.classList.remove('e-checkboxfilter');\n this.maxHeight = '800px';\n return this.menuFilterBase.sBox.innerHTML;\n };\n FilterMenuRenderer.prototype.actionComplete = function (args) {\n if (this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n return FilterMenuRenderer;\n}());\nexport { FilterMenuRenderer };\n","import * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * @hidden\n * `CheckBoxFilter` module is used to handle filtering action.\n */\nvar CheckBoxFilter = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the ServiceLocator\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function CheckBoxFilter(parent, filterSettings, serviceLocator) {\n this.parent = parent;\n this.isresetFocus = true;\n this.checkBoxBase = new CheckBoxFilterBase(parent);\n this.addEventListener();\n }\n /**\n * To destroy the check box filter.\n *\n * @returns {void}\n * @hidden\n */\n CheckBoxFilter.prototype.destroy = function () {\n this.removeEventListener();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.openDialog = function (options) {\n this.checkBoxBase.openDialog(options);\n this.parent.log('column_type_missing', { column: options.column });\n };\n CheckBoxFilter.prototype.closeDialog = function () {\n this.destroy();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n CheckBoxFilter.prototype.closeResponsiveDialog = function () {\n this.checkBoxBase.closeDialog();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n CheckBoxFilter.prototype.getModuleName = function () {\n return 'checkboxFilter';\n };\n CheckBoxFilter.prototype.actionBegin = function (args) {\n this.parent.trigger(events.actionBegin, args);\n };\n CheckBoxFilter.prototype.actionComplete = function (args) {\n this.parent.trigger(events.actionComplete, args);\n };\n CheckBoxFilter.prototype.actionPrevent = function (args) {\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, args);\n args.cancel = true;\n }\n };\n CheckBoxFilter.prototype.clearCustomFilter = function (col) {\n this.checkBoxBase.clearFilter(col);\n };\n CheckBoxFilter.prototype.applyCustomFilter = function () {\n this.checkBoxBase.fltrBtnHandler();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.cBoxFltrBegin, this.actionBegin, this);\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.parent.on(events.fltrPrevent, this.actionPrevent, this);\n };\n CheckBoxFilter.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.cBoxFltrBegin, this.actionBegin);\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.parent.off(events.fltrPrevent, this.actionPrevent);\n };\n return CheckBoxFilter;\n}());\nexport { CheckBoxFilter };\n","import { select, detach } from '@syncfusion/ej2-base';\nimport { VScroll } from './v-scroll';\nimport { HScroll } from './h-scroll';\n/**\n * Used to add scroll in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nexport function addScrolling(createElement, container, content, scrollType, enableRtl, offset) {\n var containerOffset;\n var contentOffset;\n var parentElem = container.parentElement;\n if (scrollType === 'vscroll') {\n containerOffset = offset || container.getBoundingClientRect().height;\n contentOffset = content.getBoundingClientRect().height;\n }\n else {\n containerOffset = container.getBoundingClientRect().width;\n contentOffset = content.getBoundingClientRect().width;\n }\n if (containerOffset < contentOffset) {\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n else if (parentElem) {\n var width = parentElem.getBoundingClientRect().width;\n if (width < containerOffset && scrollType === 'hscroll') {\n contentOffset = width;\n container.style.maxWidth = width + 'px';\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n return content;\n }\n else {\n return content;\n }\n}\n/**\n * Used to create scroll bar in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nfunction createScrollbar(createElement, container, content, scrollType, enableRtl, offset) {\n var scrollEle = createElement('div', { className: 'e-menu-' + scrollType });\n container.appendChild(scrollEle);\n scrollEle.appendChild(content);\n if (offset) {\n scrollEle.style.overflow = 'hidden';\n scrollEle.style.height = offset + 'px';\n }\n else {\n scrollEle.style.maxHeight = container.style.maxHeight;\n container.style.overflow = 'hidden';\n }\n var scrollObj;\n if (scrollType === 'vscroll') {\n scrollObj = new VScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetHeight / 2;\n }\n else {\n scrollObj = new HScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetWidth;\n }\n return scrollEle;\n}\n/**\n * Used to destroy the scroll option.\n *\n * @param {VScroll | HScroll} scrollObj - Specifies the scroller object\n * @param {Element} element - Specifies the element\n * @param {HTMLElement} skipEle - Specifies the skip element\n * @returns {void}\n * @hidden\n */\nexport function destroyScroll(scrollObj, element, skipEle) {\n if (scrollObj) {\n var menu = select('.e-menu-parent', element);\n if (menu) {\n if (!skipEle || skipEle === menu) {\n scrollObj.destroy();\n element.parentElement.appendChild(menu);\n detach(element);\n }\n }\n else {\n scrollObj.destroy();\n detach(element);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, NotifyPropertyChanges, isBlazor } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents, Touch } from '@syncfusion/ej2-base';\nimport { Animation } from '@syncfusion/ej2-base';\nimport { Browser, Collection, setValue, getValue, getUniqueID, getInstance, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { select, selectAll, closest, detach, append, rippleEffect, isVisible, Complex, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { getZindexPartial, calculatePosition, isCollide, fit, Popup } from '@syncfusion/ej2-popups';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nimport { addScrolling, destroyScroll } from '../common/menu-scroll';\nvar ENTER = 'enter';\nvar ESCAPE = 'escape';\nvar FOCUSED = 'e-focused';\nvar HEADER = 'e-menu-header';\nvar SELECTED = 'e-selected';\nvar SEPARATOR = 'e-separator';\nvar UPARROW = 'uparrow';\nvar DOWNARROW = 'downarrow';\nvar LEFTARROW = 'leftarrow';\nvar RIGHTARROW = 'rightarrow';\nvar HOME = 'home';\nvar END = 'end';\nvar TAB = 'tab';\nvar CARET = 'e-caret';\nvar ITEM = 'e-menu-item';\nvar DISABLED = 'e-disabled';\nvar HIDE = 'e-menu-hide';\nvar ICONS = 'e-icons';\nvar RTL = 'e-rtl';\nvar POPUP = 'e-menu-popup';\nvar TEMPLATE_PROPERTY = 'Template';\n/**\n * Configures the field options of the Menu.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('id')\n ], FieldSettings.prototype, \"itemId\", void 0);\n __decorate([\n Property('parentId')\n ], FieldSettings.prototype, \"parentId\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('url')\n ], FieldSettings.prototype, \"url\", void 0);\n __decorate([\n Property('separator')\n ], FieldSettings.prototype, \"separator\", void 0);\n __decorate([\n Property('items')\n ], FieldSettings.prototype, \"children\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Specifies menu items.\n */\nvar MenuItem = /** @class */ (function (_super) {\n __extends(MenuItem, _super);\n function MenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MenuItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], MenuItem.prototype, \"separator\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuItem.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"url\", void 0);\n return MenuItem;\n}(ChildProperty));\nexport { MenuItem };\n/**\n * Animation configuration settings.\n */\nvar MenuAnimationSettings = /** @class */ (function (_super) {\n __extends(MenuAnimationSettings, _super);\n function MenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], MenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], MenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], MenuAnimationSettings.prototype, \"easing\", void 0);\n return MenuAnimationSettings;\n}(ChildProperty));\nexport { MenuAnimationSettings };\n/**\n * Base class for Menu and ContextMenu components.\n *\n * @private\n */\nvar MenuBase = /** @class */ (function (_super) {\n __extends(MenuBase, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {MenuBaseModel} options - Specifies the menu base model\n * @param {string | HTMLUListElement} element - Specifies the element\n */\n function MenuBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.navIdx = [];\n _this.animation = new Animation({});\n _this.isTapHold = false;\n _this.tempItem = [];\n _this.showSubMenuOn = 'Auto';\n return _this;\n }\n /**\n * Initialized third party configuration settings.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.preRender = function () {\n if (!this.isMenu) {\n var ul = void 0;\n if (this.element.tagName === 'EJS-CONTEXTMENU') {\n ul = this.createElement('ul', {\n id: getUniqueID(this.getModuleName()), className: 'e-control e-lib e-' + this.getModuleName()\n });\n var ejInst = getValue('ej2_instances', this.element);\n removeClass([this.element], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.clonedElement = this.element;\n this.element = ul;\n setValue('ej2_instances', ejInst, this.element);\n }\n else {\n ul = this.createElement('ul', { id: getUniqueID(this.getModuleName()) });\n append([].slice.call(this.element.cloneNode(true).children), ul);\n var refEle = this.element.nextElementSibling;\n if (refEle) {\n this.element.parentElement.insertBefore(ul, refEle);\n }\n else {\n this.element.parentElement.appendChild(ul);\n }\n this.clonedElement = ul;\n }\n this.clonedElement.style.display = 'none';\n }\n if (this.element.tagName === 'EJS-MENU') {\n var ele = this.element;\n var ejInstance = getValue('ej2_instances', ele);\n var ul = this.createElement('ul');\n var wrapper = this.createElement('EJS-MENU', { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n ul.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = ul;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.clonedElement = wrapper;\n this.element = ele;\n if (!this.element.id) {\n this.element.id = getUniqueID(this.getModuleName());\n }\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderItems();\n this.wireEvents();\n this.renderComplete();\n var wrapper = this.getWrapper();\n // eslint-disable-next-line\n if (this.template && this.enableScrolling && (this.isReact || this.isAngular)) {\n requestAnimationFrame(function () {\n addScrolling(_this.createElement, wrapper, _this.element, 'hscroll', _this.enableRtl);\n });\n }\n };\n MenuBase.prototype.initialize = function () {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n if (this.isMenu) {\n this.element.parentElement.insertBefore(wrapper, this.element);\n }\n else {\n document.body.appendChild(wrapper);\n }\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n wrapper.appendChild(this.element);\n if (this.isMenu && this.hamburgerMode) {\n if (!this.target) {\n this.createHeaderContainer(wrapper);\n }\n }\n this.defaultOption = this.showItemOnClick;\n };\n MenuBase.prototype.renderItems = function () {\n if (!this.items.length) {\n var items = ListBase.createJsonFromElement(this.element, { fields: { child: 'items' } });\n this.setProperties({ items: items }, true);\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n var ul = this.createItems(this.items);\n append(Array.prototype.slice.call(ul.children), this.element);\n this.element.classList.add('e-menu-parent');\n if (this.isMenu) {\n if (!this.hamburgerMode && this.element.classList.contains('e-vertical')) {\n this.setBlankIconStyle(this.element);\n }\n if (this.enableScrolling) {\n var wrapper = this.getWrapper();\n if (this.element.classList.contains('e-vertical')) {\n addScrolling(this.createElement, wrapper, this.element, 'vscroll', this.enableRtl);\n }\n else {\n addScrolling(this.createElement, wrapper, this.element, 'hscroll', this.enableRtl);\n }\n }\n }\n };\n MenuBase.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n if (this.target) {\n var target = void 0;\n var targetElems = selectAll(this.target);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.add(target, 'click', this.menuHeaderClickHandler, this);\n }\n else {\n if (Browser.isIos) {\n new Touch(target, { tapHold: this.touchHandler.bind(this) });\n }\n else {\n EventHandler.add(target, 'contextmenu', this.cmenuHandler, this);\n }\n }\n }\n this.targetElement = target;\n if (!this.isMenu) {\n EventHandler.add(this.targetElement, 'scroll', this.scrollHandler, this);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollHandler, this);\n }\n }\n }\n if (!Browser.isDevice) {\n this.delegateMoverHandler = this.moverHandler.bind(this);\n this.delegateMouseDownHandler = this.mouseDownHandler.bind(this);\n EventHandler.add(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler, this);\n EventHandler.add(document, 'mousedown', this.delegateMouseDownHandler, this);\n }\n this.delegateClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHandler, this);\n this.wireKeyboardEvent(wrapper);\n this.rippleFn = rippleEffect(wrapper, { selector: '.' + ITEM });\n };\n MenuBase.prototype.wireKeyboardEvent = function (element) {\n var keyConfigs = {\n downarrow: DOWNARROW,\n uparrow: UPARROW,\n enter: ENTER,\n leftarrow: LEFTARROW,\n rightarrow: RIGHTARROW,\n escape: ESCAPE\n };\n if (this.isMenu) {\n keyConfigs.home = HOME;\n keyConfigs.end = END;\n keyConfigs.tab = TAB;\n }\n new KeyboardEvents(element, {\n keyAction: this.keyBoardHandler.bind(this),\n keyConfigs: keyConfigs\n });\n };\n MenuBase.prototype.mouseDownHandler = function (e) {\n if (closest(e.target, '.e-' + this.getModuleName() + '-wrapper') !== this.getWrapper()\n && (!closest(e.target, '.e-' + this.getModuleName() + '-popup'))) {\n this.closeMenu(this.isMenu ? null : this.navIdx.length, e);\n }\n };\n MenuBase.prototype.keyHandler = function (e) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n if (e.target && (e.target.classList.contains('e-contextmenu') || e.target.classList.contains('e-menu-item'))) {\n e.preventDefault();\n }\n }\n };\n MenuBase.prototype.keyBoardHandler = function (e) {\n var actionName = '';\n var trgt = e.target;\n var actionNeeded = this.isMenu && !this.hamburgerMode && !this.element.classList.contains('e-vertical')\n && this.navIdx.length < 1;\n e.preventDefault();\n if (this.enableScrolling && e.keyCode === 13 && trgt.classList.contains('e-scroll-nav')) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [closest(trgt, '.e-' + this.getModuleName() + '-wrapper')]);\n }\n if (actionNeeded) {\n switch (e.action) {\n case RIGHTARROW:\n actionName = RIGHTARROW;\n e.action = DOWNARROW;\n break;\n case LEFTARROW:\n actionName = LEFTARROW;\n e.action = UPARROW;\n break;\n case DOWNARROW:\n actionName = DOWNARROW;\n e.action = RIGHTARROW;\n break;\n case UPARROW:\n actionName = UPARROW;\n e.action = '';\n break;\n }\n }\n else if (this.enableRtl) {\n switch (e.action) {\n case LEFTARROW:\n actionNeeded = true;\n actionName = LEFTARROW;\n e.action = RIGHTARROW;\n break;\n case RIGHTARROW:\n actionNeeded = true;\n actionName = RIGHTARROW;\n e.action = LEFTARROW;\n break;\n }\n }\n switch (e.action) {\n case DOWNARROW:\n case UPARROW:\n case END:\n case HOME:\n case TAB:\n this.upDownKeyHandler(e);\n break;\n case RIGHTARROW:\n this.rightEnterKeyHandler(e);\n break;\n case LEFTARROW:\n this.leftEscKeyHandler(e);\n break;\n case ENTER:\n if (this.hamburgerMode && trgt.tagName === 'SPAN' && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n this.rightEnterKeyHandler(e);\n }\n break;\n case ESCAPE:\n this.leftEscKeyHandler(e);\n break;\n }\n if (actionNeeded) {\n e.action = actionName;\n }\n };\n MenuBase.prototype.upDownKeyHandler = function (e) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (e.action === DOWNARROW || e.action === HOME || e.action === TAB) ? 0 : cul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n if (e.action !== END && e.action !== HOME) {\n fliIdx = this.getIdx(cul, fli);\n }\n fli.classList.remove(FOCUSED);\n if (e.action !== END && e.action !== HOME) {\n if (e.action === DOWNARROW) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx === (e.action === DOWNARROW ? cul.childElementCount : -1)) {\n fliIdx = defaultIdx;\n }\n }\n }\n var cli = cul.children[fliIdx];\n fliIdx = this.isValidLI(cli, fliIdx, e.action);\n cul.children[fliIdx].classList.add(FOCUSED);\n cul.children[fliIdx].focus();\n };\n MenuBase.prototype.isValidLI = function (cli, index, action) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (action === DOWNARROW || action === HOME || action === TAB) ? 0 : cul.childElementCount - 1;\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n if (action === DOWNARROW && index === cul.childElementCount - 1) {\n index = defaultIdx;\n }\n else if (action === UPARROW && index === 0) {\n index = defaultIdx;\n }\n else if ((action === DOWNARROW) || (action === RIGHTARROW)) {\n index++;\n }\n else {\n index--;\n }\n }\n cli = cul.children[index];\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n index = this.isValidLI(cli, index, action);\n }\n return index;\n };\n MenuBase.prototype.getUlByNavIdx = function (navIdxLen) {\n var _this = this;\n if (navIdxLen === void 0) { navIdxLen = this.navIdx.length; }\n if (this.isMenu) {\n var popup = [this.getWrapper()].concat([].slice.call(selectAll('.' + POPUP)))[navIdxLen];\n var popups_1 = [];\n var allPopup = selectAll('.' + POPUP);\n allPopup.forEach(function (elem) {\n if (_this.element.id === elem.id.split('-')[2] || elem.id.split('-')[2] + \"-\" + elem.id.split('-')[3]) {\n popups_1.push(elem);\n }\n });\n popup = [this.getWrapper()].concat([].slice.call(popups_1))[navIdxLen];\n return isNullOrUndefined(popup) ? null : select('.e-menu-parent', popup);\n }\n else {\n return this.getWrapper().children[navIdxLen];\n }\n };\n MenuBase.prototype.rightEnterKeyHandler = function (e) {\n var eventArgs;\n var cul = this.getUlByNavIdx();\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n var fliIdx = this.getIdx(cul, fli);\n var navIdx = this.navIdx.concat(fliIdx);\n var item = this.getItem(navIdx);\n if (item.items.length) {\n this.navIdx.push(fliIdx);\n this.keyType = 'right';\n this.action = e.action;\n this.openMenu(fli, item, -1, -1, e);\n }\n else {\n if (e.action === ENTER) {\n if (this.isMenu && this.navIdx.length === 0) {\n this.removeLIStateByClass([SELECTED], [this.getWrapper()]);\n }\n else {\n fli.classList.remove(FOCUSED);\n }\n fli.classList.add(SELECTED);\n eventArgs = { element: fli, item: item, event: e };\n this.trigger('select', eventArgs);\n this.closeMenu(null, e);\n }\n }\n }\n };\n MenuBase.prototype.leftEscKeyHandler = function (e) {\n if (this.navIdx.length) {\n this.keyType = 'left';\n this.closeMenu(this.navIdx.length, e);\n }\n else {\n if (e.action === ESCAPE) {\n this.closeMenu(null, e);\n }\n }\n };\n MenuBase.prototype.scrollHandler = function (e) {\n this.closeMenu(null, e);\n };\n MenuBase.prototype.touchHandler = function (e) {\n this.isTapHold = true;\n this.cmenuHandler(e.originalEvent);\n };\n MenuBase.prototype.cmenuHandler = function (e) {\n e.preventDefault();\n this.currentTarget = e.target;\n this.isCMenu = true;\n this.pageX = e.changedTouches ? e.changedTouches[0].pageX + 1 : e.pageX + 1;\n this.pageY = e.changedTouches ? e.changedTouches[0].pageY + 1 : e.pageY + 1;\n this.closeMenu(null, e);\n if (this.isCMenu) {\n if (this.canOpen(e.target)) {\n this.openMenu(null, null, this.pageY, this.pageX, e);\n }\n this.isCMenu = false;\n }\n };\n // eslint:disable-next-line:max-func-body-length\n MenuBase.prototype.closeMenu = function (ulIndex, e, isIterated) {\n var _this = this;\n if (ulIndex === void 0) { ulIndex = 0; }\n if (e === void 0) { e = null; }\n if (this.isMenuVisible()) {\n var sli = void 0;\n var item_1;\n var wrapper_1 = this.getWrapper();\n var beforeCloseArgs = void 0;\n var items_1;\n var popups = this.getPopups();\n var isClose = false;\n var cnt = this.isMenu ? popups.length + 1 : wrapper_1.childElementCount;\n var ul_1 = this.isMenu && cnt !== 1 ? select('.e-ul', popups[cnt - 2])\n : selectAll('.e-menu-parent', wrapper_1)[cnt - 1];\n if (this.isMenu && ul_1.classList.contains('e-menu')) {\n sli = this.getLIByClass(ul_1, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n isClose = true;\n }\n if (!isClose) {\n var liElem_1 = e && e.target && this.getLI(e.target);\n if (liElem_1) {\n this.cli = liElem_1;\n }\n else {\n this.cli = ul_1.children[0];\n }\n item_1 = this.navIdx.length ? this.getItem(this.navIdx) : null;\n items_1 = item_1 ? item_1.items : this.items;\n beforeCloseArgs = { element: ul_1, parentItem: item_1, items: items_1, event: e, cancel: false, isFocused: true };\n this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n var popupEle;\n var closeArgs;\n var popupId = '';\n var popupObj;\n var isOpen = !observedCloseArgs.cancel;\n if (isOpen || _this.isCMenu) {\n if (_this.isMenu) {\n popupEle = closest(ul_1, '.' + POPUP);\n if (_this.hamburgerMode) {\n popupEle.parentElement.style.minHeight = '';\n closest(ul_1, '.e-menu-item').setAttribute('aria-expanded', 'false');\n }\n _this.unWireKeyboardEvent(popupEle);\n destroyScroll(getInstance(popupEle.children[0], VScroll), popupEle.children[0]);\n popupObj = getInstance(popupEle, Popup);\n popupObj.hide();\n popupId = popupEle.id;\n popupObj.destroy();\n detach(popupEle);\n }\n else {\n _this.toggleAnimation(ul_1, false);\n }\n closeArgs = { element: ul_1, parentItem: item_1, items: items_1 };\n _this.trigger('onClose', closeArgs);\n _this.navIdx.pop();\n if (!_this.isMenu) {\n EventHandler.remove(ul_1, 'keydown', _this.keyHandler);\n if (_this.keyType === 'right') {\n _this.keyType = '';\n }\n }\n }\n _this.updateReactTemplate();\n var trgtliId;\n var closedLi;\n var trgtLi;\n var trgtpopUp = _this.getWrapper() && _this.getUlByNavIdx();\n if (_this.isCMenu) {\n if (_this.canOpen(e.target)) {\n _this.openMenu(null, null, _this.pageY, _this.pageX, e);\n }\n _this.isCMenu = false;\n }\n if (_this.isMenu && trgtpopUp && popupId.length) {\n // eslint-disable-next-line\n trgtliId = new RegExp('(.*)-ej2menu-' + _this.element.id + '-popup').exec(popupId)[1];\n closedLi = trgtpopUp.querySelector('[id=\"' + trgtliId + '\"]');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n else if (trgtpopUp) {\n closedLi = trgtpopUp.querySelector('.e-menu-item.e-selected');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n var submenus = liElem_1 && liElem_1.querySelectorAll('.e-menu-item');\n if (isOpen && _this.hamburgerMode && ulIndex && !(submenus.length)) {\n _this.afterCloseMenu(e);\n }\n else if (isOpen && !_this.hamburgerMode && closedLi && !trgtLi && _this.keyType !== 'left' && (_this.navIdx.length || !_this.isMenu && _this.navIdx.length === 0)) {\n var ele = (e && e.target.classList.contains('e-vscroll'))\n ? closest(e.target, '.e-menu-wrapper') : null;\n if (ele) {\n ele = ele.querySelector('.e-menu-item');\n if (_this.showItemOnClick || (ele && _this.getIndex(ele.id, true).length <= _this.navIdx.length)) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e, true);\n }\n }\n else {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e);\n }\n }\n else if (isOpen && !isIterated && !ulIndex && ((_this.hamburgerMode && _this.navIdx.length) ||\n _this.navIdx.length === 1 && liElem_1 && trgtpopUp !== liElem_1.parentElement)) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && isNullOrUndefined(ulIndex) && _this.navIdx.length) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && !_this.isMenu && !ulIndex && _this.navIdx.length === 0 && !_this.isMenusClosed) {\n _this.isMenusClosed = true;\n _this.closeMenu(0, e);\n }\n else if (isOpen && _this.isMenu && e && e.target &&\n _this.navIdx.length !== 0 && closest(e.target, '.e-menu-parent.e-control')) {\n _this.closeMenu(0, e);\n }\n else if (isOpen && !_this.isMenu && selectAll('.e-menu-parent', wrapper_1)[ulIndex - 1] && e.which === 3) {\n _this.closeMenu(null, e);\n }\n else {\n if (isOpen && (_this.keyType === 'right' || _this.keyType === 'click')) {\n _this.afterCloseMenu(e);\n }\n else {\n var cul = _this.getUlByNavIdx();\n var sli_1 = _this.getLIByClass(cul, SELECTED);\n if (sli_1) {\n sli_1.setAttribute('aria-expanded', 'false');\n sli_1.classList.remove(SELECTED);\n if (observedCloseArgs.isFocused && liElem_1 || _this.keyType === 'left') {\n sli_1.classList.add(FOCUSED);\n if (!e.target || !e.target.classList.contains('e-edit-template')) {\n sli_1.focus();\n }\n }\n }\n if (!isOpen && _this.hamburgerMode && liElem_1 && liElem_1.getAttribute('aria-expanded') === 'false' &&\n liElem_1.getAttribute('aria-haspopup') === 'true') {\n if (closest(liElem_1, '.e-menu-parent.e-control')) {\n _this.navIdx = [];\n }\n else {\n _this.navIdx.pop();\n }\n _this.navIdx.push(_this.cliIdx);\n var item_2 = _this.getItem(_this.navIdx);\n liElem_1.setAttribute('aria-expanded', 'true');\n _this.openMenu(liElem_1, item_2, -1, -1, e);\n }\n }\n if (_this.navIdx.length < 1) {\n if (_this.showSubMenuOn === 'Hover' || _this.showSubMenuOn === 'Click') {\n _this.showItemOnClick = _this.defaultOption;\n _this.showSubMenuOn = 'Auto';\n }\n }\n }\n _this.removeStateWrapper();\n });\n }\n }\n };\n MenuBase.prototype.updateReactTemplate = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && this.template && this.navIdx.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var portals = this.portals.splice(0, this.items.length);\n this.clearTemplate(['template']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.portals = portals;\n this.renderReactTemplates();\n }\n };\n MenuBase.prototype.getMenuItemModel = function (item, level) {\n if (isNullOrUndefined(item)) {\n return null;\n }\n if (isNullOrUndefined(level)) {\n level = 0;\n }\n var fields = this.getFields(level);\n return { text: item[fields.text], id: item[fields.id], items: item[fields.child], separator: item[fields.separator],\n iconCss: item[fields.iconCss], url: item[fields.url] };\n };\n MenuBase.prototype.getPopups = function () {\n var _this = this;\n var popups = [];\n [].slice.call(document.querySelectorAll('.' + POPUP)).forEach(function (elem) {\n if (!isNullOrUndefined(elem.querySelector('.' + ITEM)) && _this.getIndex(elem.querySelector('.' + ITEM).id, true).length) {\n popups.push(elem);\n }\n });\n return popups;\n };\n MenuBase.prototype.isMenuVisible = function () {\n return (this.navIdx.length > 0 || (this.element.classList.contains('e-contextmenu') && isVisible(this.element).valueOf()));\n };\n MenuBase.prototype.canOpen = function (target) {\n var canOpen = true;\n if (this.filter) {\n canOpen = false;\n var filter = this.filter.split(' ');\n for (var i = 0, len = filter.length; i < len; i++) {\n if (closest(target, '.' + filter[i])) {\n canOpen = true;\n break;\n }\n }\n }\n return canOpen;\n };\n MenuBase.prototype.openMenu = function (li, item, top, left, e, target) {\n var _this = this;\n if (top === void 0) { top = 0; }\n if (left === void 0) { left = 0; }\n if (e === void 0) { e = null; }\n if (target === void 0) { target = this.targetElement; }\n var wrapper = this.getWrapper();\n this.lItem = li;\n var elemId = this.element.id !== '' ? this.element.id : 'menu';\n this.isMenusClosed = false;\n if (isNullOrUndefined(top)) {\n top = -1;\n }\n if (isNullOrUndefined(left)) {\n left = -1;\n }\n if (li) {\n this.uList = this.createItems(item[this.getField('children', this.navIdx.length - 1)]);\n if (!this.isMenu && Browser.isDevice) {\n wrapper.lastChild.style.display = 'none';\n var data = {\n text: item[this.getField('text')].toString(), iconCss: ICONS + ' e-previous'\n };\n var hdata = new MenuItem(this.items[0], 'items', data, true);\n var hli = this.createItems([hdata]).children[0];\n hli.classList.add(HEADER);\n this.uList.insertBefore(hli, this.uList.children[0]);\n }\n if (this.isMenu) {\n this.popupWrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper ' + POPUP, id: li.id + '-ej2menu-' + elemId + '-popup'\n });\n if (this.hamburgerMode) {\n top = li.offsetHeight;\n li.appendChild(this.popupWrapper);\n }\n else {\n document.body.appendChild(this.popupWrapper);\n }\n this.isNestedOrVertical = this.element.classList.contains('e-vertical') || this.navIdx.length !== 1;\n this.popupObj = this.generatePopup(this.popupWrapper, this.uList, li, this.isNestedOrVertical);\n if (this.template) {\n this.renderReactTemplates();\n }\n if (this.hamburgerMode) {\n this.calculateIndentSize(this.uList, li);\n }\n else {\n if (this.cssClass) {\n addClass([this.popupWrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.popupObj.hide();\n }\n if (!this.hamburgerMode && !this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, 0, 0, 'menu'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, 0, 0, 'menu');\n }\n }\n else {\n this.uList.style.zIndex = this.element.style.zIndex;\n wrapper.appendChild(this.uList);\n if (!this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, top, left, 'none'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n }\n else {\n this.uList = this.element;\n this.uList.style.zIndex = getZindexPartial(target ? target : this.element).toString();\n if (isNullOrUndefined(e)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ev = document.createEvent('MouseEvents');\n ev.initEvent(\"click\", true, false);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetEvent = this.copyObject(ev, {});\n targetEvent.target = targetEvent.srcElement = target;\n targetEvent.currentTarget = target;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.triggerBeforeOpen(li, this.uList, item, targetEvent, top, left, 'none');\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n };\n MenuBase.prototype.copyObject = function (source, destination) {\n for (var prop in source) {\n destination[\"\" + prop] = source[\"\" + prop];\n }\n return destination;\n };\n MenuBase.prototype.calculateIndentSize = function (ul, li) {\n var liStyle = getComputedStyle(li);\n var liIndent = parseInt(liStyle.textIndent, 10);\n if (this.navIdx.length < 2 && !li.classList.contains('e-blankicon')) {\n liIndent *= 2;\n }\n else {\n liIndent += (liIndent / 4);\n }\n ul.style.textIndent = liIndent + 'px';\n var blankIconElem = ul.querySelectorAll('.e-blankicon');\n if (blankIconElem && blankIconElem.length) {\n var menuIconElem = ul.querySelector('.e-menu-icon');\n var menuIconElemStyle = getComputedStyle(menuIconElem);\n var blankIconIndent = (parseInt(menuIconElemStyle.marginRight, 10) + menuIconElem.offsetWidth + liIndent);\n for (var i = 0; i < blankIconElem.length; i++) {\n blankIconElem[i].style.textIndent = blankIconIndent + 'px';\n }\n }\n };\n MenuBase.prototype.generatePopup = function (popupWrapper, ul, li, isNestedOrVertical) {\n var _this = this;\n var popupObj = new Popup(popupWrapper, {\n actionOnScroll: this.hamburgerMode ? 'none' : 'reposition',\n relateTo: li,\n collision: this.hamburgerMode ? { X: 'none', Y: 'none' } : { X: isNestedOrVertical ||\n this.enableRtl ? 'none' : 'flip', Y: 'fit' },\n position: (isNestedOrVertical && !this.hamburgerMode) ? { X: 'right', Y: 'top' } : { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n enableRtl: this.enableRtl,\n content: ul,\n open: function () {\n var scrollEle = select('.e-menu-vscroll', popupObj.element);\n if (scrollEle) {\n scrollEle.style.height = 'inherit';\n scrollEle.style.maxHeight = '';\n }\n var ul = select('.e-ul', popupObj.element);\n popupObj.element.style.maxHeight = '';\n ul.focus();\n _this.triggerOpen(ul);\n }\n });\n return popupObj;\n };\n MenuBase.prototype.createHeaderContainer = function (wrapper) {\n wrapper = wrapper || this.getWrapper();\n var spanElem = this.createElement('span', { className: 'e-' + this.getModuleName() + '-header' });\n var tempTitle = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.title) : this.title;\n var spanTitle = this.createElement('span', {\n className: 'e-' + this.getModuleName() + '-title', innerHTML: tempTitle\n });\n var spanIcon = this.createElement('span', {\n className: 'e-icons e-' + this.getModuleName() + '-icon', attrs: { 'tabindex': '0' }\n });\n spanElem.appendChild(spanTitle);\n spanElem.appendChild(spanIcon);\n wrapper.insertBefore(spanElem, this.element);\n };\n MenuBase.prototype.openHamburgerMenu = function (e) {\n if (this.hamburgerMode) {\n this.triggerBeforeOpen(null, this.element, null, e, 0, 0, 'hamburger');\n }\n };\n MenuBase.prototype.closeHamburgerMenu = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.element, parentItem: null, event: e,\n items: this.items, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedHamburgerCloseArgs) {\n if (!observedHamburgerCloseArgs.cancel) {\n _this.closeMenu(null, e);\n _this.element.classList.add('e-hide-menu');\n _this.trigger('onClose', { element: _this.element, parentItem: null, items: _this.items });\n }\n });\n };\n MenuBase.prototype.callFit = function (element, x, y, top, left) {\n return fit(element, null, { X: x, Y: y }, { top: top, left: left });\n };\n MenuBase.prototype.triggerBeforeOpen = function (li, ul, item, e, top, left, type) {\n var _this = this;\n var items = li ? item[this.getField('children', this.navIdx.length - 1)] : this.items;\n var eventArgs = {\n element: ul, items: items, parentItem: item, event: e, cancel: false, top: top, left: left, showSubMenuOn: 'Auto'\n };\n var menuType = type;\n this.trigger('beforeOpen', eventArgs, function (observedOpenArgs) {\n switch (menuType) {\n case 'menu':\n if (!_this.hamburgerMode) {\n if (observedOpenArgs.showSubMenuOn !== 'Auto') {\n _this.showItemOnClick = !_this.defaultOption;\n _this.showSubMenuOn = observedOpenArgs.showSubMenuOn;\n }\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n }\n _this.popupWrapper.style.display = 'block';\n if (!_this.hamburgerMode) {\n _this.popupWrapper.style.maxHeight = _this.popupWrapper.getBoundingClientRect().height + 'px';\n if (_this.enableScrolling) {\n addScrolling(_this.createElement, _this.popupWrapper, _this.uList, 'vscroll', _this.enableRtl);\n }\n _this.checkScrollOffset(e);\n }\n if (!_this.hamburgerMode && !_this.left && !_this.top) {\n _this.popupObj.refreshPosition(_this.lItem, true);\n _this.left = parseInt(_this.popupWrapper.style.left, 10);\n _this.top = parseInt(_this.popupWrapper.style.top, 10);\n if (_this.enableRtl) {\n _this.left =\n _this.isNestedOrVertical ? _this.left - _this.popupWrapper.offsetWidth - _this.lItem.parentElement.offsetWidth + 2\n : _this.left - _this.popupWrapper.offsetWidth + _this.lItem.offsetWidth;\n }\n // eslint-disable-next-line\n if (_this.template && (_this.isReact || _this.isAngular)) {\n requestAnimationFrame(function () {\n _this.collision();\n _this.popupWrapper.style.display = '';\n });\n }\n else {\n _this.collision();\n _this.popupWrapper.style.display = '';\n }\n }\n else {\n _this.popupObj.collision = { X: 'none', Y: 'none' };\n _this.popupWrapper.style.display = '';\n }\n break;\n case 'none':\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n break;\n case 'hamburger':\n if (!observedOpenArgs.cancel) {\n _this.element.classList.remove('e-hide-menu');\n _this.triggerOpen(_this.element);\n }\n break;\n }\n if (menuType !== 'hamburger') {\n if (observedOpenArgs.cancel) {\n if (_this.isMenu) {\n _this.popupObj.destroy();\n detach(_this.popupWrapper);\n }\n else if (ul.className.indexOf('e-ul') > -1) {\n detach(ul);\n }\n _this.navIdx.pop();\n }\n else {\n if (_this.isMenu) {\n if (_this.hamburgerMode) {\n _this.popupWrapper.style.top = _this.top + 'px';\n _this.popupWrapper.style.left = 0 + 'px';\n _this.toggleAnimation(_this.popupWrapper);\n }\n else {\n _this.setBlankIconStyle(_this.popupWrapper);\n _this.wireKeyboardEvent(_this.popupWrapper);\n rippleEffect(_this.popupWrapper, { selector: '.' + ITEM });\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + 'px';\n var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect, duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n _this.popupObj.show(animationOptions, _this.lItem);\n }\n }\n else {\n _this.setBlankIconStyle(_this.uList);\n _this.setPosition(_this.lItem, _this.uList, _this.top, _this.left);\n _this.toggleAnimation(_this.uList);\n }\n }\n }\n if (_this.keyType === 'right') {\n var cul = _this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n if (_this.isMenu && _this.navIdx.length === 1) {\n _this.removeLIStateByClass([SELECTED], [_this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (_this.action === ENTER) {\n var eventArgs_1 = { element: li, item: item, event: e };\n _this.trigger('select', eventArgs_1);\n }\n li.focus();\n cul = _this.getUlByNavIdx();\n var index = _this.isValidLI(cul.children[0], 0, _this.action);\n cul.children[index].classList.add(FOCUSED);\n cul.children[index].focus();\n }\n });\n };\n MenuBase.prototype.collision = function () {\n var collide;\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if ((this.isNestedOrVertical || this.enableRtl) && (collide.indexOf('right') > -1\n || collide.indexOf('left') > -1)) {\n this.popupObj.collision.X = 'none';\n var offWidth = closest(this.lItem, '.e-' + this.getModuleName() + '-wrapper').offsetWidth;\n this.left =\n this.enableRtl ? calculatePosition(this.lItem, this.isNestedOrVertical ? 'right' : 'left', 'top').left\n : this.left - this.popupWrapper.offsetWidth - offWidth + 2;\n }\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if (collide.indexOf('left') > -1 || collide.indexOf('right') > -1) {\n this.left = this.callFit(this.popupWrapper, true, false, this.top, this.left).left;\n }\n this.popupWrapper.style.left = this.left + 'px';\n };\n MenuBase.prototype.setBlankIconStyle = function (menu) {\n var blankIconList = [].slice.call(menu.getElementsByClassName('e-blankicon'));\n if (!blankIconList.length) {\n return;\n }\n var iconLi = menu.querySelector('.e-menu-item:not(.e-blankicon):not(.e-separator)');\n if (!iconLi) {\n return;\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n if (!icon) {\n return;\n }\n var cssProp = this.enableRtl ? { padding: 'paddingRight', margin: 'marginLeft' } :\n { padding: 'paddingLeft', margin: 'marginRight' };\n var iconCssProps = getComputedStyle(icon);\n var iconSize = parseInt(iconCssProps.fontSize, 10);\n if (!!parseInt(iconCssProps.width, 10) && parseInt(iconCssProps.width, 10) > iconSize) {\n iconSize = parseInt(iconCssProps.width, 10);\n }\n // eslint:disable\n var size = iconSize + parseInt(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconCssProps[cssProp.margin], 10) + parseInt(getComputedStyle(iconLi)[cssProp.padding], 10) + \"px\";\n blankIconList.forEach(function (li) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n li.style[cssProp.padding] = size;\n });\n // eslint:enable\n };\n MenuBase.prototype.checkScrollOffset = function (e) {\n var wrapper = this.getWrapper();\n if (wrapper.children[0].classList.contains('e-menu-hscroll') && this.navIdx.length === 1) {\n var trgt = isNullOrUndefined(e) ? this.element : closest(e.target, '.' + ITEM);\n var offsetEle = select('.e-hscroll-bar', wrapper);\n if (offsetEle.scrollLeft > trgt.offsetLeft) {\n offsetEle.scrollLeft -= (offsetEle.scrollLeft - trgt.offsetLeft);\n }\n var offsetLeft = offsetEle.scrollLeft + offsetEle.offsetWidth;\n var offsetRight = trgt.offsetLeft + trgt.offsetWidth;\n if (offsetLeft < offsetRight) {\n offsetEle.scrollLeft += (offsetRight - offsetLeft);\n }\n }\n };\n MenuBase.prototype.setPosition = function (li, ul, top, left) {\n var px = 'px';\n this.toggleVisiblity(ul);\n if (ul === this.element || (left > -1 && top > -1)) {\n var collide = isCollide(ul, null, left, top);\n if (collide.indexOf('right') > -1) {\n left = left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n var offset = this.callFit(ul, false, true, top, left);\n top = offset.top - 20;\n if (top < 0) {\n var newTop = (pageYOffset + document.documentElement.clientHeight) - ul.getBoundingClientRect().height;\n if (newTop > -1) {\n top = newTop;\n }\n }\n }\n collide = isCollide(ul, null, left, top);\n if (collide.indexOf('left') > -1) {\n var offset = this.callFit(ul, true, false, top, left);\n left = offset.left;\n }\n }\n else {\n if (Browser.isDevice) {\n top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\n }\n else {\n var x = this.enableRtl ? 'left' : 'right';\n var offset = calculatePosition(li, x, 'top');\n top = offset.top;\n left = offset.left;\n var collide = isCollide(ul, null, this.enableRtl ? left - ul.offsetWidth : left, top);\n var xCollision = collide.indexOf('left') > -1 || collide.indexOf('right') > -1;\n if (xCollision) {\n offset = calculatePosition(li, this.enableRtl ? 'right' : 'left', 'top');\n left = offset.left;\n }\n if (this.enableRtl || xCollision) {\n left = (this.enableRtl && xCollision) ? left : left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\n ul.style.top = top + px;\n ul.style.left = left + px;\n };\n MenuBase.prototype.toggleVisiblity = function (ul, isVisible) {\n if (isVisible === void 0) { isVisible = true; }\n ul.style.visibility = isVisible ? 'hidden' : '';\n ul.style.display = isVisible ? 'block' : 'none';\n };\n MenuBase.prototype.createItems = function (items) {\n var _this = this;\n var level = this.navIdx ? this.navIdx.length : 0;\n var fields = this.getFields(level);\n var showIcon = this.hasField(items, this.getField('iconCss', level));\n var listBaseOptions = {\n showIcon: showIcon,\n moduleName: 'menu',\n fields: fields,\n template: this.template,\n itemNavigable: true,\n itemCreating: function (args) {\n if (!args.curData[args.fields[fields.id]]) {\n args.curData[args.fields[fields.id]] = getUniqueID('menuitem');\n }\n if (isNullOrUndefined(args.curData.htmlAttributes)) {\n args.curData.htmlAttributes = {};\n }\n if (Browser.isIE) {\n args.curData.htmlAttributes.role = 'menuitem';\n args.curData.htmlAttributes.tabindex = '-1';\n }\n else {\n Object.assign(args.curData.htmlAttributes, { role: 'menuitem', tabindex: '-1' });\n }\n if (_this.isMenu && !args.curData[_this.getField('separator', level)]) {\n args.curData.htmlAttributes['aria-label'] = args.curData[args.fields.text] ?\n args.curData[args.fields.text] : args.curData[args.fields.id];\n }\n if (args.curData[args.fields[fields.iconCss]] === '') {\n args.curData[args.fields[fields.iconCss]] = null;\n }\n },\n itemCreated: function (args) {\n if (args.curData[_this.getField('separator', level)]) {\n args.item.classList.add(SEPARATOR);\n args.item.setAttribute('role', 'separator');\n }\n if (showIcon && !args.curData[args.fields.iconCss]\n && !args.curData[_this.getField('separator', level)]) {\n args.item.classList.add('e-blankicon');\n }\n if (args.curData[args.fields.child]\n && args.curData[args.fields.child].length) {\n var span = _this.createElement('span', { className: ICONS + ' ' + CARET });\n args.item.appendChild(span);\n args.item.setAttribute('aria-haspopup', 'true');\n args.item.setAttribute('aria-expanded', 'false');\n args.item.classList.add('e-menu-caret-icon');\n }\n if (_this.isMenu && _this.template) {\n args.item.setAttribute('id', args.curData[args.fields.id].toString());\n args.item.removeAttribute('data-uid');\n if (args.item.classList.contains('e-level-1')) {\n args.item.classList.remove('e-level-1');\n }\n if (args.item.classList.contains('e-has-child')) {\n args.item.classList.remove('e-has-child');\n }\n args.item.removeAttribute('aria-level');\n }\n var eventArgs = { item: args.curData, element: args.item };\n _this.trigger('beforeItemRender', eventArgs);\n }\n };\n this.setProperties({ 'items': this.items }, true);\n if (this.isMenu) {\n listBaseOptions.templateID = this.element.id + TEMPLATE_PROPERTY;\n }\n var ul = ListBase.createList(this.createElement, items, listBaseOptions, !this.template, this);\n ul.setAttribute('tabindex', '0');\n if (this.isMenu) {\n ul.setAttribute('role', 'menu');\n }\n else {\n ul.setAttribute('role', 'menubar');\n }\n return ul;\n };\n MenuBase.prototype.moverHandler = function (e) {\n var trgt = e.target;\n this.liTrgt = trgt;\n var cli = this.getLI(trgt);\n var wrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : this.getWrapper();\n var hdrWrapper = this.getWrapper();\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var ulId;\n var isDifferentElem = false;\n if (!wrapper) {\n return;\n }\n if (wrapper.id !== '') {\n ulId = regex.exec(wrapper.id)[1];\n }\n else {\n ulId = wrapper.querySelector('ul').id;\n }\n if (ulId !== this.element.id) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [this.getWrapper()]);\n if (this.navIdx.length) {\n isDifferentElem = true;\n }\n else {\n return;\n }\n }\n if (cli && closest(cli, '.e-' + this.getModuleName() + '-wrapper') && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [wrapper].concat(this.getPopups()) : [wrapper]);\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [hdrWrapper].concat(this.getPopups()) : [hdrWrapper]);\n cli.classList.add(FOCUSED);\n if (!this.showItemOnClick) {\n this.clickHandler(e);\n }\n }\n else if (this.isMenu && this.showItemOnClick && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n }\n if (this.isMenu) {\n if (!this.showItemOnClick && (trgt.parentElement !== wrapper && !closest(trgt, '.e-' + this.getModuleName() + '-popup'))\n && (!cli || (cli && !this.getIndex(cli.id, true).length)) && this.showSubMenuOn !== 'Hover') {\n this.removeLIStateByClass([FOCUSED], [wrapper]);\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n else if (isDifferentElem && !this.showItemOnClick) {\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n if (!this.isClosed) {\n this.removeStateWrapper();\n }\n this.isClosed = false;\n }\n };\n MenuBase.prototype.removeStateWrapper = function () {\n if (this.liTrgt) {\n var wrapper = closest(this.liTrgt, '.e-menu-vscroll');\n if (this.liTrgt.tagName === 'DIV' && wrapper) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [wrapper]);\n }\n }\n };\n MenuBase.prototype.removeLIStateByClass = function (classList, element) {\n var li;\n var _loop_1 = function (i) {\n classList.forEach(function (className) {\n li = select('.' + className, element[i]);\n if (li) {\n li.classList.remove(className);\n }\n });\n };\n for (var i = 0; i < element.length; i++) {\n _loop_1(i);\n }\n };\n MenuBase.prototype.getField = function (propName, level) {\n if (level === void 0) { level = 0; }\n var fieldName = this.fields[\"\" + propName];\n return typeof fieldName === 'string' ? fieldName :\n (!fieldName[level] ? fieldName[fieldName.length - 1].toString()\n : fieldName[level].toString());\n };\n MenuBase.prototype.getFields = function (level) {\n if (level === void 0) { level = 0; }\n return {\n id: this.getField('itemId', level),\n iconCss: this.getField('iconCss', level),\n text: this.getField('text', level),\n url: this.getField('url', level),\n child: this.getField('children', level),\n separator: this.getField('separator', level)\n };\n };\n MenuBase.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n MenuBase.prototype.menuHeaderClickHandler = function (e) {\n if (closest(e.target, '.e-menu-wrapper').querySelector('ul.e-menu-parent').id !== this.element.id) {\n return;\n }\n if (this.element.className.indexOf('e-hide-menu') > -1) {\n this.openHamburgerMenu(e);\n }\n else {\n this.closeHamburgerMenu(e);\n }\n };\n MenuBase.prototype.clickHandler = function (e) {\n if (this.isTapHold) {\n this.isTapHold = false;\n }\n else {\n var wrapper = this.getWrapper();\n var trgt = e.target;\n var cli = this.cli = this.getLI(trgt);\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;\n var isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0\n : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);\n if (Browser.isDevice && this.isMenu) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n this.mouseDownHandler(e);\n }\n if (cli && cliWrapper && this.isMenu) {\n var cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;\n if (this.element.id !== cliWrapperId) {\n return;\n }\n }\n if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {\n this.setLISelected(cli);\n var navIdx = this.getIndex(cli.id, true);\n var item = this.getItem(navIdx);\n var eventArgs = { element: cli, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {\n var ul = void 0;\n if (cli.classList.contains(HEADER)) {\n ul = wrapper.children[this.navIdx.length - 1];\n this.toggleAnimation(ul);\n var sli = this.getLIByClass(ul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n detach(cli.parentNode);\n this.navIdx.pop();\n }\n else {\n if (!cli.classList.contains(SEPARATOR)) {\n this.showSubMenu = true;\n var cul = cli.parentNode;\n this.cliIdx = this.getIdx(cul, cli);\n if (this.isMenu || !Browser.isDevice) {\n var culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))\n : this.getIdx(wrapper, cul);\n if (this.navIdx[culIdx] === this.cliIdx) {\n this.showSubMenu = false;\n }\n if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n this.isClosed = true;\n this.keyType = 'click';\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n this.closeMenu(culIdx + 1, e);\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n }\n }\n if (!this.isClosed) {\n this.afterCloseMenu(e);\n }\n this.isClosed = false;\n }\n }\n }\n else {\n if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {\n var popupEle = closest(trgt, '.' + POPUP);\n var cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;\n if (cIdx < this.navIdx.length) {\n this.closeMenu(cIdx + 1, e);\n if (popupEle) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);\n }\n }\n }\n else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'\n && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&\n !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {\n if (!cli) {\n this.removeLIStateByClass([SELECTED], [wrapper]);\n }\n if (!cli || !cli.querySelector('.' + CARET)) {\n this.closeMenu(null, e);\n }\n }\n }\n }\n }\n };\n MenuBase.prototype.afterCloseMenu = function (e) {\n if (isNullOrUndefined(e)) {\n return;\n }\n var isHeader;\n if (this.showSubMenu) {\n if (this.showItemOnClick && this.navIdx.length === 0) {\n isHeader = closest(e.target, '.e-menu-parent.e-control');\n }\n else {\n isHeader = closest(this.element, '.e-menu-parent.e-control');\n }\n var idx = this.navIdx.concat(this.cliIdx);\n var item = this.getItem(idx);\n if (item && item[this.getField('children', idx.length - 1)] &&\n item[this.getField('children', idx.length - 1)].length) {\n if (e.type === 'mouseover' || (Browser.isDevice && this.isMenu)) {\n this.setLISelected(this.cli);\n }\n if ((!this.hamburgerMode && isHeader) || (this.hamburgerMode && this.cli.getAttribute('aria-expanded') === 'false')) {\n this.cli.setAttribute('aria-expanded', 'true');\n this.navIdx.push(this.cliIdx);\n this.openMenu(this.cli, item, null, null, e);\n }\n }\n else {\n if (e.type !== 'mouseover') {\n this.closeMenu(null, e);\n }\n }\n if (!isHeader) {\n var cul = this.getUlByNavIdx();\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.setAttribute('aria-expanded', 'false');\n sli.classList.remove(SELECTED);\n }\n }\n }\n this.keyType = '';\n };\n MenuBase.prototype.setLISelected = function (li) {\n var sli = this.getLIByClass(li.parentElement, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n if (!this.isMenu) {\n li.classList.remove(FOCUSED);\n }\n li.classList.add(SELECTED);\n };\n MenuBase.prototype.getLIByClass = function (ul, classname) {\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains(classname)) {\n return ul.children[i];\n }\n }\n return null;\n };\n /**\n * This method is used to get the index of the menu item in the Menu based on the argument.\n *\n * @param {MenuItem | string} item - item be passed to get the index | id to be passed to get the item index.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.getItemIndex = function (item, isUniqueId) {\n var idx;\n if (typeof item === 'string') {\n idx = item;\n }\n else {\n idx = item.id;\n }\n var isText = (isUniqueId === false) ? false : true;\n var navIdx = this.getIndex(idx, isText);\n return navIdx;\n };\n /**\n * This method is used to set the menu item in the Menu based on the argument.\n *\n * @param {MenuItem} item - item need to be updated.\n * @param {string} id - id / text to be passed to update the item.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.setItem = function (item, id, isUniqueId) {\n var idx;\n if (isUniqueId) {\n idx = id ? id : item.id;\n }\n else {\n idx = id ? id : item.text;\n }\n var navIdx = this.getIndex(idx, isUniqueId);\n var newItem = this.getItem(navIdx);\n Object.assign(newItem, item);\n };\n MenuBase.prototype.getItem = function (navIdx) {\n navIdx = navIdx.slice();\n var idx = navIdx.pop();\n var items = this.getItems(navIdx);\n return items[idx];\n };\n MenuBase.prototype.getItems = function (navIdx) {\n var items = this.items;\n for (var i = 0; i < navIdx.length; i++) {\n items = items[navIdx[i]][this.getField('children', i)];\n }\n return items;\n };\n MenuBase.prototype.setItems = function (newItems, navIdx) {\n var items = this.getItems(navIdx);\n items.splice(0, items.length);\n for (var i = 0; i < newItems.length; i++) {\n items.splice(i, 0, newItems[i]);\n }\n };\n MenuBase.prototype.getIdx = function (ul, li, skipHdr) {\n if (skipHdr === void 0) { skipHdr = true; }\n var idx = Array.prototype.indexOf.call(ul.children, li);\n if (skipHdr && ul.children[0].classList.contains(HEADER)) {\n idx--;\n }\n return idx;\n };\n MenuBase.prototype.getLI = function (elem) {\n if (elem.tagName === 'LI' && elem.classList.contains('e-menu-item')) {\n return elem;\n }\n return closest(elem, 'li.e-menu-item');\n };\n MenuBase.prototype.updateItemsByNavIdx = function () {\n var items = this.items;\n var count = 0;\n for (var index = 0; index < this.navIdx.length; index++) {\n items = items[index].items;\n if (!items) {\n break;\n }\n count++;\n var ul = this.getUlByNavIdx(count);\n if (!ul) {\n break;\n }\n this.updateItem(ul, items);\n }\n };\n MenuBase.prototype.removeChildElement = function (elem) {\n while (elem.firstElementChild) {\n elem.removeChild(elem.firstElementChild);\n }\n return elem;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuBaseModel} newProp - Specifies the new properties\n * @param {MenuBaseModel} oldProp - Specifies the old properties\n * @returns {void}\n */\n MenuBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var wrapper = this.getWrapper();\n var _loop_2 = function (prop) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n wrapper.classList.toggle(RTL);\n break;\n case 'showItemOnClick':\n this_1.unWireEvents();\n this_1.showItemOnClick = newProp.showItemOnClick;\n this_1.wireEvents();\n break;\n case 'enableScrolling':\n if (newProp.enableScrolling) {\n var ul_2;\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n this_1.getPopups().forEach(function (wrapper) {\n ul_2 = select('.e-ul', wrapper);\n addScrolling(_this.createElement, wrapper, ul_2, 'vscroll', _this.enableRtl);\n });\n }\n else {\n var ul_3 = wrapper.children[0];\n if (this_1.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n }\n else {\n destroyScroll(getInstance(ul_3, HScroll), ul_3);\n }\n wrapper.style.overflow = '';\n wrapper.appendChild(this_1.element);\n this_1.getPopups().forEach(function (wrapper) {\n ul_3 = wrapper.children[0];\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n wrapper.style.overflow = '';\n });\n }\n break;\n case 'items': {\n var idx = void 0;\n var navIdx = void 0;\n var item = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this_1.isReact && this_1.template) {\n this_1.clearTemplate(['template']);\n }\n if (!Object.keys(oldProp.items).length) {\n this_1.updateItem(this_1.element, this_1.items);\n if (this_1.enableScrolling && this_1.element.parentElement.classList.contains('e-custom-scroll')) {\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n }\n if (!this_1.hamburgerMode) {\n for (var i = 1, count = wrapper.childElementCount; i < count; i++) {\n detach(wrapper.lastElementChild);\n }\n }\n this_1.navIdx = [];\n }\n else {\n var keys = Object.keys(newProp.items);\n for (var i = 0; i < keys.length; i++) {\n navIdx = this_1.getChangedItemIndex(newProp, [], Number(keys[i]));\n if (navIdx.length <= this_1.getWrapper().children.length) {\n idx = navIdx.pop();\n item = this_1.getItems(navIdx);\n this_1.insertAfter([item[idx]], item[idx].text);\n this_1.removeItem(item, navIdx, idx);\n this_1.setItems(item, navIdx);\n }\n navIdx.length = 0;\n }\n }\n break;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_2(prop);\n }\n };\n MenuBase.prototype.updateItem = function (ul, items) {\n if (isBlazor() && !this.isMenu) {\n ul = this.removeChildElement(ul);\n }\n else {\n if (this.enableScrolling) {\n var wrapper1 = this.getWrapper();\n var ul1 = wrapper1.children[0];\n if (this.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul1, VScroll), ul1);\n }\n else {\n destroyScroll(getInstance(ul1, HScroll), ul1);\n }\n }\n ul.innerHTML = '';\n }\n var lis = [].slice.call(this.createItems(items).children);\n lis.forEach(function (li) {\n ul.appendChild(li);\n });\n };\n MenuBase.prototype.getChangedItemIndex = function (newProp, index, idx) {\n index.push(idx);\n var key = Object.keys(newProp.items[idx]).pop();\n if (key === 'items') {\n var item = newProp.items[idx];\n var popStr = Object.keys(item.items).pop();\n if (popStr) {\n this.getChangedItemIndex(item, index, Number(popStr));\n }\n }\n else {\n if (key === 'isParentArray' && index.length > 1) {\n index.pop();\n }\n }\n return index;\n };\n MenuBase.prototype.removeItem = function (item, navIdx, idx) {\n item.splice(idx, 1);\n var uls = this.getWrapper().children;\n if (navIdx.length < uls.length) {\n detach(uls[navIdx.length].children[idx]);\n }\n };\n /**\n * Used to unwire the bind events.\n *\n * @private\n * @param {string} targetSelctor - Specifies the target selector\n * @returns {void}\n */\n MenuBase.prototype.unWireEvents = function (targetSelctor) {\n if (targetSelctor === void 0) { targetSelctor = this.target; }\n var wrapper = this.getWrapper();\n if (targetSelctor) {\n var target = void 0;\n var touchModule = void 0;\n var targetElems = selectAll(targetSelctor);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.remove(target, 'click', this.menuHeaderClickHandler);\n }\n else {\n if (Browser.isIos) {\n touchModule = getInstance(target, Touch);\n if (touchModule) {\n touchModule.destroy();\n }\n }\n else {\n EventHandler.remove(target, 'contextmenu', this.cmenuHandler);\n }\n }\n }\n if (!this.isMenu) {\n EventHandler.remove(this.targetElement, 'scroll', this.scrollHandler);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollHandler);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.remove(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler);\n EventHandler.remove(document, 'mousedown', this.delegateMouseDownHandler);\n }\n EventHandler.remove(document, 'click', this.delegateClickHandler);\n this.unWireKeyboardEvent(wrapper);\n this.rippleFn();\n };\n MenuBase.prototype.unWireKeyboardEvent = function (element) {\n var keyboardModule = getInstance(element, KeyboardEvents);\n if (keyboardModule) {\n keyboardModule.destroy();\n }\n };\n MenuBase.prototype.toggleAnimation = function (ul, isMenuOpen) {\n var _this = this;\n if (isMenuOpen === void 0) { isMenuOpen = true; }\n var pUlHeight;\n var pElement;\n if (this.animationSettings.effect === 'None' || !isMenuOpen) {\n this.end(ul, isMenuOpen);\n }\n else {\n this.animation.animate(ul, {\n name: this.animationSettings.effect,\n duration: this.animationSettings.duration,\n timingFunction: this.animationSettings.easing,\n begin: function (options) {\n if (_this.hamburgerMode) {\n pElement = options.element.parentElement;\n options.element.style.position = 'absolute';\n pUlHeight = pElement.offsetHeight;\n options.element.style.maxHeight = options.element.offsetHeight + 'px';\n pElement.style.maxHeight = '';\n }\n else {\n options.element.style.display = 'block';\n options.element.style.maxHeight = options.element.getBoundingClientRect().height + 'px';\n }\n },\n progress: function (options) {\n if (_this.hamburgerMode) {\n pElement.style.minHeight = (pUlHeight + options.element.offsetHeight) + 'px';\n }\n },\n end: function (options) {\n if (_this.hamburgerMode) {\n options.element.style.position = '';\n options.element.style.maxHeight = '';\n pElement.style.minHeight = '';\n options.element.style.top = 0 + 'px';\n options.element.children[0].focus();\n _this.triggerOpen(options.element.children[0]);\n }\n else {\n _this.end(options.element, isMenuOpen);\n }\n }\n });\n }\n };\n MenuBase.prototype.triggerOpen = function (ul) {\n var item = this.navIdx.length ? this.getItem(this.navIdx) : null;\n var eventArgs = {\n element: ul, parentItem: item, items: item ? item.items : this.items\n };\n this.trigger('onOpen', eventArgs);\n if (!this.isMenu) {\n EventHandler.add(ul, 'keydown', this.keyHandler, this);\n }\n };\n MenuBase.prototype.end = function (ul, isMenuOpen) {\n if (isMenuOpen) {\n ul.style.display = 'block';\n ul.style.maxHeight = '';\n this.triggerOpen(ul);\n if (ul.querySelector('.' + FOCUSED)) {\n ul.querySelector('.' + FOCUSED).focus();\n }\n else {\n var ele = this.getWrapper().children[this.getIdx(this.getWrapper(), ul) - 1];\n if (this.currentTarget) {\n if (!(this.currentTarget.classList.contains('e-numerictextbox') || this.currentTarget.classList.contains('e-textbox') || this.currentTarget.tagName === 'INPUT')) {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n else {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n }\n else {\n if (ul === this.element) {\n var fli = this.getLIByClass(this.element, FOCUSED);\n if (fli) {\n fli.classList.remove(FOCUSED);\n }\n var sli = this.getLIByClass(this.element, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n ul.style.display = 'none';\n }\n else {\n detach(ul);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n MenuBase.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Get wrapper element.\n *\n * @returns {Element} - Wrapper element\n * @private\n */\n MenuBase.prototype.getWrapper = function () {\n return closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n };\n MenuBase.prototype.getIndex = function (data, isUniqueId, items, nIndex, isCallBack, level) {\n if (items === void 0) { items = this.items; }\n if (nIndex === void 0) { nIndex = []; }\n if (isCallBack === void 0) { isCallBack = false; }\n if (level === void 0) { level = 0; }\n var item;\n level = isCallBack ? level + 1 : 0;\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n if ((isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)]) === data) {\n nIndex.push(i);\n break;\n }\n else if (item[this.getField('children', level)]\n && item[this.getField('children', level)].length) {\n nIndex = this.getIndex(data, isUniqueId, item[this.getField('children', level)], nIndex, true, level);\n if (nIndex[nIndex.length - 1] === -1) {\n if (i !== len - 1) {\n nIndex.pop();\n }\n }\n else {\n nIndex.unshift(i);\n break;\n }\n }\n else {\n if (i === len - 1) {\n nIndex.push(-1);\n }\n }\n }\n return (!isCallBack && nIndex[0] === -1) ? [] : nIndex;\n };\n /**\n * This method is used to enable or disable the menu items in the Menu based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.enableItems = function (items, enable, isUniqueId) {\n if (enable === void 0) { enable = true; }\n var ul;\n var idx;\n var navIdx;\n var disabled = DISABLED;\n var skipItem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n if (this.navIdx.length) {\n if (navIdx.length !== 1) {\n skipItem = false;\n for (var i_1 = 0, len = navIdx.length - 1; i_1 < len; i_1++) {\n if (navIdx[i_1] !== this.navIdx[i_1]) {\n skipItem = true;\n break;\n }\n }\n if (skipItem) {\n continue;\n }\n }\n }\n else {\n if (navIdx.length !== 1) {\n continue;\n }\n }\n idx = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul && !isNullOrUndefined(idx)) {\n if (enable) {\n if (this.isMenu) {\n ul.children[idx].classList.remove(disabled);\n ul.children[idx].removeAttribute('aria-disabled');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.remove(disabled);\n }\n else {\n ul.children[idx].classList.remove(disabled);\n }\n }\n }\n else {\n if (this.isMenu) {\n ul.children[idx].classList.add(disabled);\n ul.children[idx].setAttribute('aria-disabled', 'true');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.add(disabled);\n }\n else {\n ul.children[idx].classList.add(disabled);\n }\n }\n }\n }\n }\n };\n /**\n * This method is used to show the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be shown.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.showItems = function (items, isUniqueId) {\n this.showHideItems(items, false, isUniqueId);\n };\n /**\n * This method is used to hide the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be hidden.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.hideItems = function (items, isUniqueId) {\n this.showHideItems(items, true, isUniqueId);\n };\n MenuBase.prototype.showHideItems = function (items, ishide, isUniqueId) {\n var ul;\n var index;\n var navIdx;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n index = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul) {\n var validUl = isUniqueId ? ul.children[index].id : ul.children[index].textContent;\n if (ishide && validUl === items[i]) {\n ul.children[index].classList.add(HIDE);\n }\n else {\n ul.children[index].classList.remove(HIDE);\n }\n }\n }\n };\n /**\n * It is used to remove the menu items from the Menu based on the items text.\n *\n * @param {string[]} items Text items that needs to be removed.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.removeItems = function (items, isUniqueId) {\n var idx;\n var navIdx;\n var iitems;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n if (!isNullOrUndefined(idx)) {\n this.removeItem(iitems, navIdx, idx);\n }\n }\n };\n /**\n * It is used to insert the menu items after the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item after that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertAfter = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId);\n };\n /**\n * It is used to insert the menu items before the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item before that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertBefore = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId, false);\n };\n MenuBase.prototype.insertItems = function (items, text, isUniqueId, isAfter) {\n if (isAfter === void 0) { isAfter = true; }\n var li;\n var idx;\n var navIdx;\n var iitems;\n var menuitem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(text, isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n menuitem = new MenuItem(iitems[0], 'items', items[i], true);\n iitems.splice(isAfter ? idx + 1 : idx, 0, menuitem);\n var uls = this.isMenu ? [this.getWrapper()].concat(this.getPopups()) : [].slice.call(this.getWrapper().children);\n if (!isNullOrUndefined(idx) && navIdx.length < uls.length) {\n idx = isAfter ? idx + 1 : idx;\n li = this.createItems(iitems).children[idx];\n var ul = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];\n ul.insertBefore(li, ul.children[idx]);\n }\n }\n };\n MenuBase.prototype.removeAttributes = function () {\n var _this = this;\n ['top', 'left', 'display', 'z-index'].forEach(function (key) {\n _this.element.style.removeProperty(key);\n });\n ['role', 'tabindex', 'class', 'style'].forEach(function (key) {\n if (key === 'class' && _this.element.classList.contains('e-menu-parent')) {\n _this.element.classList.remove('e-menu-parent');\n }\n if (['class', 'style'].indexOf(key) === -1 || !_this.element.getAttribute(key)) {\n _this.element.removeAttribute(key);\n }\n if (_this.isMenu && key === 'class' && _this.element.classList.contains('e-vertical')) {\n _this.element.classList.remove('e-vertical');\n }\n });\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n MenuBase.prototype.destroy = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n this.unWireEvents();\n if (!this.isMenu) {\n this.clonedElement.style.display = '';\n if (this.clonedElement.tagName === 'EJS-CONTEXTMENU') {\n addClass([this.clonedElement], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.element = this.clonedElement;\n }\n else {\n if (this.refreshing && this.clonedElement.childElementCount && this.clonedElement.children[0].tagName === 'LI') {\n this.setProperties({ 'items': [] }, true);\n }\n if (document.getElementById(this.clonedElement.id)) {\n var refEle = this.clonedElement.nextElementSibling;\n if (refEle && refEle !== wrapper) {\n this.clonedElement.parentElement.insertBefore(this.element, refEle);\n }\n else {\n this.clonedElement.parentElement.appendChild(this.element);\n }\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n append([].slice.call(this.clonedElement.children), this.element);\n detach(this.clonedElement);\n this.removeAttributes();\n }\n }\n this.clonedElement = null;\n }\n else {\n this.closeMenu();\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n this.removeAttributes();\n wrapper.parentNode.insertBefore(this.element, wrapper);\n this.clonedElement = null;\n }\n if (this.isMenu && this.clonedElement) {\n detach(this.element);\n wrapper.style.display = '';\n wrapper.classList.remove('e-' + this.getModuleName() + '-wrapper');\n wrapper.removeAttribute('data-ripple');\n }\n else {\n detach(wrapper);\n }\n _super.prototype.destroy.call(this);\n if (this.template) {\n this.clearTemplate(['template']);\n }\n }\n this.rippleFn = null;\n };\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"created\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], MenuBase.prototype, \"hoverDelay\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"filter\", void 0);\n __decorate([\n Property(null)\n ], MenuBase.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableScrolling\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], MenuBase.prototype, \"fields\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuBase.prototype, \"items\", void 0);\n __decorate([\n Complex({ duration: 400, easing: 'ease', effect: 'SlideDown' }, MenuAnimationSettings)\n ], MenuBase.prototype, \"animationSettings\", void 0);\n MenuBase = __decorate([\n NotifyPropertyChanges\n ], MenuBase);\n return MenuBase;\n}(Component));\nexport { MenuBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/triple-slash-reference */\n/// \nimport { attributes, getUniqueID, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\nimport { MenuBase, MenuItem } from '../common/menu-base';\n/**\n * The ContextMenu is a graphical user interface that appears on the user right click/touch hold operation.\n * ```html\n *
\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar ContextMenu = /** @class */ (function (_super) {\n __extends(ContextMenu, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {ContextMenuModel} options - Specifies the context menu model\n * @param {string} element - Specifies the element\n */\n function ContextMenu(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.preRender = function () {\n this.isMenu = false;\n this.element.id = this.element.id || getUniqueID('ej2-contextmenu');\n _super.prototype.preRender.call(this);\n };\n ContextMenu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n this.element.style.zIndex = getZindexPartial(this.element).toString();\n };\n /**\n * This method is used to open the ContextMenu in specified position.\n *\n * @param {number} top - To specify ContextMenu vertical positioning.\n * @param {number} left - To specify ContextMenu horizontal positioning.\n * @param {HTMLElement} target - To calculate z-index for ContextMenu based upon the specified target.\n * @function open\n * @returns {void}\n */\n ContextMenu.prototype.open = function (top, left, target) {\n _super.prototype.openMenu.call(this, null, null, top, left, null, target);\n };\n /**\n * Closes the ContextMenu if it is opened.\n *\n * @function close\n * @returns {void}\n */\n ContextMenu.prototype.close = function () {\n _super.prototype.closeMenu.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {ContextMenuModel} newProp - Specifies new properties\n * @param {ContextMenuModel} oldProp - Specifies old properties\n * @returns {void}\n */\n ContextMenu.prototype.onPropertyChanged = function (newProp, oldProp) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'filter':\n this.close();\n this.filter = newProp.filter;\n break;\n case 'target':\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n break;\n }\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"filter\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], ContextMenu.prototype, \"items\", void 0);\n ContextMenu = __decorate([\n NotifyPropertyChanges\n ], ContextMenu);\n return ContextMenu;\n}(MenuBase));\nexport { ContextMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, remove, Browser } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { DropDownList, AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { RadioButton, CheckBox } from '@syncfusion/ej2-buttons';\nimport { distinctStringValues, isComplexField, getComplexFieldID, getCustomDateFormat, applyBiggerTheme, performComplexDataOperation, registerEventHandlers, removeEventHandlers, clearReactVueTemplates } from '../base/util';\nimport { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { parentsUntil, appendChildren, extend, eventPromise } from '../base/util';\nimport * as events from '../base/constant';\nimport { ContextMenu } from '@syncfusion/ej2-navigations';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilterBase = /** @class */ (function (_super) {\n __extends(ExcelFilterBase, _super);\n /**\n * Constructor for excel filtering module\n *\n * @param {IXLFilter} parent - parent details\n * @param {Object} customFltrOperators - operator details\n * @hidden\n */\n function ExcelFilterBase(parent, customFltrOperators) {\n var _this = _super.call(this, parent) || this;\n _this.childRefs = [];\n _this.eventHandlers = {};\n _this.isDevice = false;\n _this.customFilterOperators = customFltrOperators;\n _this.isExcel = true;\n return _this;\n }\n ExcelFilterBase.prototype.getCMenuDS = function (type, operator) {\n var options = {\n number: ['Equal', 'NotEqual', '', 'LessThan', 'LessThanOrEqual', 'GreaterThan',\n 'GreaterThanOrEqual', 'Between', '', 'CustomFilter'],\n string: ['Equal', 'NotEqual', '', 'StartsWith', 'EndsWith', '', 'Contains', 'NotContains', '', 'CustomFilter']\n };\n options.date = options.number;\n options.datetime = options.number;\n options.dateonly = options.number;\n var model = [];\n for (var i = 0; i < options[\"\" + type].length; i++) {\n if (options[\"\" + type][parseInt(i.toString(), 10)].length) {\n if (operator) {\n model.push({\n text: this.getLocalizedLabel(options[\"\" + type][parseInt(i.toString(), 10)]) + '...',\n iconCss: 'e-icons e-icon-check ' + (operator === options[\"\" + type][parseInt(i.toString(), 10)].toLowerCase() ? '' : 'e-emptyicon')\n });\n }\n else {\n model.push({\n text: this.getLocalizedLabel(options[\"\" + type][parseInt(i.toString(), 10)]) + '...'\n });\n }\n }\n else {\n model.push({ separator: true });\n }\n }\n return model;\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilterBase.prototype.destroy = function () {\n if (this.dlg) {\n this.unwireExEvents();\n _super.prototype.closeDialog.call(this);\n }\n if (!this.isDevice && this.menuObj) {\n var li = this.menuObj.element.querySelector('li.e-focused');\n if (!(li && parentsUntil(li, 'e-excel-menu'))) {\n this.destroyCMenu();\n }\n }\n if (this.dlgObj && !this.dlgObj.isDestroyed) {\n this.removeDialog();\n }\n };\n ExcelFilterBase.prototype.createMenu = function (type, isFiltered, isCheckIcon, eleOptions) {\n var options = { string: 'TextFilter', date: 'DateFilter', dateonly: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n this.menu = this.parent.createElement('div', { className: 'e-contextmenu-wrapper' });\n if (this.parent.enableRtl) {\n this.menu.classList.add('e-rtl');\n }\n else {\n this.menu.classList.remove('e-rtl');\n }\n if (this.parent.cssClass) {\n this.menu.classList.add(this.parent.cssClass);\n }\n var ul = this.parent.createElement('ul');\n var icon = isFiltered ? 'e-excl-filter-icon e-filtered' : 'e-excl-filter-icon';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.allowSorting && this.parent.getModuleName() === 'grid'\n && !this.options.isResponsiveFilter) {\n var hdrele = this.parent.getColumnHeaderByUid(eleOptions.uid).getAttribute('aria-sort');\n var colIsSort = this.parent.getColumnByField(eleOptions.field).allowSorting;\n var isAsc = (!colIsSort || hdrele === 'ascending') ? 'e-disabled e-excel-ascending' : 'e-excel-ascending';\n var isDesc = (!colIsSort || hdrele === 'descending') ? 'e-disabled e-excel-descending' : 'e-excel-descending';\n var ascName = (type === 'string') ? this.getLocalizedLabel('SortAtoZ') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByOldest') : this.getLocalizedLabel('SortSmallestToLargest');\n var descName = (type === 'string') ? this.getLocalizedLabel('SortZtoA') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByNewest') : this.getLocalizedLabel('SortLargestToSmallest');\n ul.appendChild(this.createMenuElem(ascName, isAsc, 'e-sortascending'));\n ul.appendChild(this.createMenuElem(descName, isDesc, 'e-sortdescending'));\n var separator = this.parent.createElement('li', { className: 'e-separator e-menu-item e-excel-separator' });\n ul.appendChild(separator);\n }\n if (!this.options.isResponsiveFilter) {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel('ClearFilter'), isFiltered ? '' : 'e-disabled', icon));\n }\n if (type !== 'boolean') {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel(options[\"\" + type]), 'e-submenu', isCheckIcon && this.ensureTextFilter() ? 'e-icon-check' : icon + ' e-emptyicon', true));\n }\n this.menu.appendChild(ul);\n this.parent.notify(events.beforeFltrcMenuOpen, { element: this.menu });\n this.parent.notify(events.refreshCustomFilterClearBtn, { isFiltered: isFiltered });\n };\n ExcelFilterBase.prototype.createMenuElem = function (val, className, iconName, isSubMenu) {\n var li = this.parent.createElement('li', { className: className + ' e-menu-item' });\n li.innerHTML = val;\n li.insertBefore(this.parent.createElement('span', { className: 'e-menu-icon e-icons ' + iconName, attrs: { 'aria-hidden': 'true' } }), li.firstChild);\n if (isSubMenu) {\n li.appendChild(this.parent.createElement('span', { className: 'e-icons e-caret' }));\n }\n return li;\n };\n ExcelFilterBase.prototype.wireExEvents = function () {\n EventHandler.add(this.dlg, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.dlg, 'click', this.clickExHandler, this);\n };\n ExcelFilterBase.prototype.unwireExEvents = function () {\n EventHandler.remove(this.dlg, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.dlg, 'click', this.clickExHandler);\n };\n ExcelFilterBase.prototype.clickExHandler = function (e) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var menuItem = parentsUntil(e.target, 'e-menu-item');\n if (menuItem) {\n if (this.getLocalizedLabel('ClearFilter') === menuItem.innerText.trim()) {\n this.clearFilter();\n this.closeDialog();\n }\n else if (this.options.isResponsiveFilter\n && this.getLocalizedLabel(options[this.options.type]) === menuItem.innerText.trim()) {\n this.hoverHandler(e);\n }\n }\n };\n ExcelFilterBase.prototype.destroyCMenu = function () {\n this.isCMenuOpen = false;\n if (this.menuObj && !this.menuObj.isDestroyed) {\n this.menuObj.destroy();\n remove(this.cmenu);\n this.parent.notify(events.renderResponsiveCmenu, { target: null, header: '', isOpen: false, col: this.options.column });\n }\n };\n ExcelFilterBase.prototype.hoverHandler = function (e) {\n if (this.options.isResponsiveFilter && e.type === 'mouseover') {\n return;\n }\n var target = e.target.querySelector('.e-contextmenu');\n var li = parentsUntil(e.target, 'e-menu-item');\n var focused = this.menu.querySelector('.e-focused');\n var isSubMenu;\n if (focused) {\n focused.classList.remove('e-focused');\n }\n if (li) {\n li.classList.add('e-focused');\n isSubMenu = li.classList.contains('e-submenu');\n }\n if (target) {\n return;\n }\n if (!isSubMenu) {\n var submenu = this.menu.querySelector('.e-submenu');\n if (!isNullOrUndefined(submenu)) {\n submenu.classList.remove('e-selected');\n }\n this.destroyCMenu();\n }\n var selectedMenu = this.ensureTextFilter();\n if (!this.isCMenuOpen && isSubMenu) {\n li.classList.add('e-selected');\n this.isCMenuOpen = true;\n var menuOptions = {\n items: this.getCMenuDS(this.options.type, selectedMenu ? selectedMenu.replace(/\\s/g, '') : undefined),\n select: this.selectHandler.bind(this),\n onClose: this.destroyCMenu.bind(this),\n enableRtl: this.parent.enableRtl,\n animationSettings: { effect: 'None' },\n beforeClose: this.preventClose.bind(this),\n cssClass: this.options.isResponsiveFilter && this.parent.cssClass ?\n 'e-res-contextmenu-wrapper' + ' ' + this.parent.cssClass : this.options.isResponsiveFilter ?\n 'e-res-contextmenu-wrapper' : this.parent.cssClass ? this.parent.cssClass : ''\n };\n this.parent.element.appendChild(this.cmenu);\n this.menuObj = new ContextMenu(menuOptions, this.cmenu);\n var client = this.menu.querySelector('.e-submenu').getBoundingClientRect();\n var pos = { top: 0, left: 0 };\n if (this.options.isResponsiveFilter) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.menuObj.element.style.height = 'calc(100% - ' + height + 'px)';\n this.menuObj['open'](height, 0, document.body);\n var header = this.getLocalizedLabel(options[this.options.type]);\n this.parent.notify(events.renderResponsiveCmenu, {\n target: this.menuObj.element.parentElement, header: header, isOpen: true\n });\n }\n else {\n if (Browser.isDevice) {\n this.isDevice = true;\n var contextRect = this.getContextBounds();\n pos.top = (window.innerHeight - contextRect.height) / 2;\n pos.left = (window.innerWidth - contextRect.width) / 2;\n this.closeDialog();\n this.isDevice = false;\n }\n else {\n pos.top = Browser.isIE ? window.pageYOffset + client.top : window.scrollY + client.top;\n pos.left = this.getCMenuYPosition(this.dlg);\n }\n this.menuObj['open'](pos.top, pos.left, e.target);\n }\n applyBiggerTheme(this.parent.element, this.menuObj.element.parentElement);\n }\n };\n ExcelFilterBase.prototype.ensureTextFilter = function () {\n var selectedMenu;\n var predicates = this.existingPredicate[this.options.field];\n if (predicates && predicates.length === 2) {\n if (predicates[0].operator === 'greaterthanorequal' && predicates[1].operator === 'lessthanorequal') {\n selectedMenu = 'between';\n }\n else {\n selectedMenu = 'customfilter';\n }\n }\n else {\n if (predicates && predicates.length === 1) {\n this.optrData = this.customFilterOperators[this.options.type + 'Operator'];\n selectedMenu = predicates[0].operator;\n }\n }\n return selectedMenu;\n };\n ExcelFilterBase.prototype.preventClose = function (args) {\n if (this.options && this.options.isResponsiveFilter && args.event) {\n var target = args.event.target;\n var isFilterBack = target.classList.contains('e-resfilterback')\n || target.classList.contains('e-res-back-btn') || target.classList.contains('e-menu-item');\n args.cancel = !isFilterBack;\n }\n else {\n if (args.event instanceof MouseEvent && args.event.target.classList.contains('e-submenu')) {\n args.cancel = true;\n }\n }\n };\n ExcelFilterBase.prototype.getContextBounds = function () {\n this.menuObj.element.style.display = 'block';\n return this.menuObj.element.getBoundingClientRect();\n };\n ExcelFilterBase.prototype.getCMenuYPosition = function (target) {\n var contextWidth = this.getContextBounds().width;\n var targetPosition = target.getBoundingClientRect();\n var leftPos = targetPosition.right + contextWidth - this.parent.element.clientWidth;\n var targetBorder = target.offsetWidth - target.clientWidth;\n targetBorder = targetBorder ? targetBorder + 1 : 0;\n return (leftPos < 1) ? (targetPosition.right + 1 - targetBorder) : (targetPosition.left - contextWidth - 1 + targetBorder);\n };\n ExcelFilterBase.prototype.openDialog = function (options) {\n var _this = this;\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n if (options.cancel) {\n return;\n }\n this.dialogObj.dataBind();\n var filterLength = (this.existingPredicate[options.field] && this.existingPredicate[options.field].length) ||\n this.options.filteredColumns.filter(function (col) {\n return _this.options.field === col.field;\n }).length;\n this.createMenu(options.type, filterLength > 0, (filterLength === 1 || filterLength === 2), options);\n this.dlg.insertBefore(this.menu, this.dlg.firstChild);\n this.dlg.classList.add('e-excelfilter');\n if (this.parent.enableRtl) {\n this.dlg.classList.add('e-rtl');\n }\n this.dlg.classList.remove('e-checkboxfilter');\n this.cmenu = this.parent.createElement('ul', { className: 'e-excel-menu' });\n if (options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, {});\n }\n this.wireExEvents();\n };\n ExcelFilterBase.prototype.closeDialog = function () {\n this.destroy();\n };\n ExcelFilterBase.prototype.selectHandler = function (e) {\n if (e.item) {\n this.parent.notify(events.filterCmenuSelect, {});\n this.menuItem = e.item;\n this.renderDialogue(e);\n }\n };\n /**\n * @hidden\n * @param {MenuEventArgs} e - event args\n * @returns {void}\n */\n ExcelFilterBase.prototype.renderDialogue = function (e) {\n var _this = this;\n var target = e ? e.element : undefined;\n var column = this.options.field;\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var mainDiv = this.parent.createElement('div', {\n className: 'e-xlfl-maindiv',\n id: isComplex ? complexFieldName + '-xlflmenu' : column + '-xlflmenu'\n });\n this.dlgDiv = this.parent.createElement('div', {\n className: 'e-xlflmenu',\n id: isComplex ? complexFieldName + '-xlfldlg' : column + '-xlfldlg'\n });\n if (this.options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n header: this.getLocalizedLabel('CustomFilter'),\n isModal: true,\n overlayClick: this.removeDialog.bind(this),\n showCloseIcon: true,\n locale: this.parent.locale,\n closeOnEscape: false,\n target: document.body,\n // target: this.parent.element,\n visible: false,\n enableRtl: this.parent.enableRtl,\n open: function () {\n var row = _this.dlgObj.element.querySelector('table.e-xlfl-table>tr');\n if (_this.options.column.filterTemplate) {\n var templateField_1 = isComplexField(_this.options.column.field) ?\n getComplexFieldID(_this.options.column.field) : _this.options.column.field;\n var isReactCompiler = _this.parent.isReact && typeof (_this.options.column.filterTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n _this.parent.renderTemplates(function () {\n row.querySelector('#' + templateField_1 + '-xlfl-frstvalue').focus();\n });\n }\n else {\n row.querySelector('#' + templateField_1 + '-xlfl-frstvalue').focus();\n }\n }\n else {\n //(row.cells[1].querySelector('input:not([type=hidden])') as HTMLElement).focus();\n }\n },\n close: this.removeDialog.bind(this),\n created: this.createdDialog.bind(this, target, column),\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.getLocalizedLabel('OKButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-xlfl-okbtn' + ' ' + this.parent.cssClass : 'e-xlfl-okbtn'\n }\n },\n {\n click: this.removeDialog.bind(this),\n buttonModel: { content: this.getLocalizedLabel('CancelButton'),\n cssClass: this.parent.cssClass ? 'e-xlfl-cancelbtn' + ' ' + this.parent.cssClass : 'e-xlfl-cancelbtn' }\n }],\n content: mainDiv,\n width: 430,\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgDiv.setAttribute('aria-label', this.getLocalizedLabel('CustomFilterDialogARIA'));\n this.childRefs.push(this.dlgObj);\n this.dlgObj.appendTo(this.dlgDiv);\n };\n ExcelFilterBase.prototype.renderResponsiveDialog = function () {\n if (this.options.isResponsiveFilter) {\n var rowResponsiveDlg = document.querySelector('.e-row-responsive-filter');\n if (rowResponsiveDlg) {\n rowResponsiveDlg.classList.remove('e-row-responsive-filter');\n }\n this.dlgObj.buttons = [{}];\n this.dlgObj.header = undefined;\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.showCloseIcon = false;\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n ExcelFilterBase.prototype.removeDialog = function () {\n this.parent.notify(events.customFilterClose, {});\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\n }\n this.removeObjects(this.childRefs);\n remove(this.dlgDiv);\n this.parent.notify(events.filterDialogClose, {});\n };\n ExcelFilterBase.prototype.createdDialog = function (target, column) {\n this.renderCustomFilter(target, column);\n this.dlgObj.element.style.left = '0px';\n if (!this.options.isResponsiveFilter) {\n this.dlgObj.element.style.top = '0px';\n }\n else {\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.dlgObj.element.style.top = height + 'px';\n }\n if (!this.options.isResponsiveFilter && Browser.isDevice && window.innerWidth < 440) {\n this.dlgObj.element.style.width = '90%';\n }\n this.parent.notify(events.beforeCustomFilterOpen, { column: column, dialog: this.dialogObj });\n this.dlgObj.show();\n applyBiggerTheme(this.parent.element, this.dlgObj.element.parentElement);\n };\n ExcelFilterBase.prototype.renderCustomFilter = function (target, column) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-xlfl-maindiv');\n var dlgFields = this.parent.createElement('div', { innerHTML: this.getLocalizedLabel('ShowRowsWhere'), className: 'e-xlfl-dlgfields' });\n dlgConetntEle.appendChild(dlgFields);\n //column name\n var fieldSet = this.parent.createElement('div', { innerHTML: this.options.displayName, className: 'e-xlfl-fieldset' });\n dlgConetntEle.appendChild(fieldSet);\n this.renderFilterUI(column, dlgConetntEle);\n };\n /**\n * @hidden\n * @param {string} col - Defines column details\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterBtnClick = function (col) {\n var isComplex = !isNullOrUndefined(col) && isComplexField(col);\n var complexFieldName = !isNullOrUndefined(col) && getComplexFieldID(col);\n var colValue = isComplex ? complexFieldName : col;\n var fValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstvalue').ej2_instances[0];\n var fOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstoptr').ej2_instances[0];\n var sValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndvalue').ej2_instances[0];\n var sOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndoptr').ej2_instances[0];\n var checkBoxValue;\n if (this.options.type === 'string') {\n var checkBox = this.dlgDiv.querySelector('#' + colValue + '-xlflmtcase').ej2_instances[0];\n checkBoxValue = checkBox.checked;\n }\n var andRadio = this.dlgDiv.querySelector('#' + colValue + 'e-xlfl-frstpredicate').ej2_instances[0];\n var predicate = (andRadio.checked ? 'and' : 'or');\n if (sValue.value === null) {\n predicate = 'or';\n }\n this.filterByColumn(this.options.field, fOperator.value, fValue.value, predicate, checkBoxValue, this.options.ignoreAccent, sOperator.value, sValue.value);\n this.removeDialog();\n };\n /**\n * @hidden\n * Filters grid row by column name with given options.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} firstOperator - Defines the first operator by how to filter records.\n * @param {string | number | Date | boolean} firstValue - Defines the first value which is used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If ignore case set to true, then filter records with exact match or else\n * filter records with case insensitive(uppercase and lowercase letters treated as same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then ignores the diacritic characters or accents when filtering.\n * @param {string} secondOperator - Defines the second operator by how to filter records.\n * @param {string | number | Date | boolean} secondValue - Defines the first value which is used to filter records.\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n var col = this.parent.getColumnByField ? this.parent.getColumnByField(fieldName) : this.options.column;\n var field = this.isForeignColumn(col) ? col.foreignKeyValue : fieldName;\n var fColl = [];\n var mPredicate;\n var arg = {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: firstOperator, arg3: firstValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: secondOperator, arg8: secondValue, cancel: false\n };\n this.parent.notify(events.fltrPrevent, arg);\n if (arg.cancel) {\n return;\n }\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: firstOperator,\n value: arg.arg3,\n type: this.options.type\n });\n mPredicate = new Predicate(field, firstOperator.toLowerCase(), arg.arg3, !matchCase, ignoreAccent);\n if (!isNullOrUndefined(secondValue) && !isNullOrUndefined(secondOperator)) {\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: secondOperator,\n value: arg.arg8,\n type: this.options.type\n });\n mPredicate = mPredicate[\"\" + predicate](field, secondOperator.toLowerCase(), secondValue, !matchCase, ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: mPredicate, actualPredicate: fColl\n };\n if (this.isForeignColumn(col)) {\n this.foreignKeyFilter(args, fColl, mPredicate);\n }\n else {\n this.options.handler(args);\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderOperatorUI = function (column, table, elementID, predicates, isFirst) {\n var fieldElement = this.parent.createElement('tr', { className: 'e-xlfl-fields' });\n table.appendChild(fieldElement);\n var xlfloptr = this.parent.createElement('td', { className: 'e-xlfl-optr' });\n fieldElement.appendChild(xlfloptr);\n var optrDiv = this.parent.createElement('div', { className: 'e-xlfl-optrdiv' });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var optrInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementID : column + elementID });\n optrDiv.appendChild(optrInput);\n xlfloptr.appendChild(optrDiv);\n var optr = this.options.type + 'Operator';\n var dropDatasource = this.customFilterOperators[\"\" + optr];\n this.optrData = dropDatasource;\n var selectedValue = this.dropSelectedVal(this.options.column, predicates, isFirst);\n //Trailing three dots are sliced.\n var menuText = '';\n if (this.menuItem) {\n menuText = this.menuItem.text.slice(0, -3);\n if (menuText !== this.getLocalizedLabel('CustomFilter')) {\n selectedValue = isFirst ? menuText : undefined;\n }\n if (menuText === this.getLocalizedLabel('Between')) {\n selectedValue = this.getLocalizedLabel(isFirst ? 'GreaterThanOrEqual' : 'LessThanOrEqual');\n }\n }\n var col = this.options.column;\n var dropOptr = new DropDownList(extend({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n text: selectedValue,\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, col.filter.params));\n this.childRefs.push(dropOptr);\n var evt = { 'open': this.dropDownOpen.bind(this), 'change': this.dropDownValueChange.bind(this) };\n registerEventHandlers(optrInput.id, [literals.open, literals.change], evt, this);\n dropOptr.addEventListener(literals['open'], this.eventHandlers[optrInput.id][literals.open]);\n dropOptr.addEventListener(literals.change, this.eventHandlers[optrInput.id][literals.change]);\n dropOptr.appendTo(optrInput);\n var operator = this.getSelectedValue(selectedValue);\n return { fieldElement: fieldElement, operator: operator };\n };\n ExcelFilterBase.prototype.removeHandlersFromComponent = function (component) {\n if (component.element.classList.contains('e-dropdownlist')) {\n removeEventHandlers(component, [literals.open, literals.change], this);\n }\n else if (component.element.classList.contains('e-autocomplete')) {\n removeEventHandlers(component, [events.actionComplete, literals.focus], this);\n }\n };\n ExcelFilterBase.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n ExcelFilterBase.prototype.dropDownValueChange = function (args) {\n if (args.element.id.includes('-xlfl-frstoptr')) {\n this.firstOperator = args.value.toString();\n }\n else {\n this.secondOperator = args.value.toString();\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns filter UI\n */\n ExcelFilterBase.prototype.getFilterUIInfo = function () {\n return { firstOperator: this.firstOperator, secondOperator: this.secondOperator, field: this.options.field };\n };\n ExcelFilterBase.prototype.getSelectedValue = function (text) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('text', 'equal', text));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].value : '';\n };\n ExcelFilterBase.prototype.dropSelectedVal = function (col, predicates, isFirst) {\n var operator;\n if (predicates && predicates.length > 0) {\n operator = predicates.length === 2 ?\n (isFirst ? predicates[0].operator : predicates[1].operator) :\n (isFirst ? predicates[0].operator : undefined);\n }\n else if (isFirst && col.type === 'string' && !col.filter.operator) {\n operator = 'startswith';\n }\n else {\n operator = isFirst ? col.filter.operator || 'equal' : undefined;\n }\n return this.getSelectedText(operator);\n };\n ExcelFilterBase.prototype.getSelectedText = function (operator) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', operator));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n };\n ExcelFilterBase.prototype.renderFilterUI = function (column, dlgConetntEle) {\n var predicates = this.existingPredicate[\"\" + column];\n var table = this.parent.createElement('table', { className: 'e-xlfl-table', attrs: { role: 'grid' } });\n dlgConetntEle.appendChild(table);\n var colGroup = this.parent.createElement(literals.colGroup);\n colGroup.innerHTML = '';\n table.appendChild(colGroup);\n //Renders first dropdown\n var optr = this.renderOperatorUI(column, table, '-xlfl-frstoptr', predicates, true);\n this.firstOperator = optr.operator;\n //Renders first value\n this.renderFlValueUI(column, optr, '-xlfl-frstvalue', predicates, true);\n var predicate = this.parent.createElement('tr', { className: 'e-xlfl-predicate' });\n table.appendChild(predicate);\n //Renders first radion button\n this.renderRadioButton(column, predicate, predicates);\n //Renders second dropdown\n optr = this.renderOperatorUI(column, table, '-xlfl-secndoptr', predicates, false);\n this.secondOperator = optr.operator;\n //Renders second text box\n this.renderFlValueUI(column, optr, '-xlfl-secndvalue', predicates, false);\n };\n ExcelFilterBase.prototype.renderRadioButton = function (column, tr, predicates) {\n var td = this.parent.createElement('td', { className: 'e-xlfl-radio', attrs: { 'colSpan': '2' } });\n tr.appendChild(td);\n var radioDiv = this.parent\n .createElement('div', { className: 'e-xlfl-radiodiv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var frstpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-frstpredicate' : column + 'e-xlfl-frstpredicate', attrs: { 'type': 'radio' } });\n var secndpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-secndpredicate' : column + 'e-xlfl-secndpredicate', attrs: { 'type': 'radio' } });\n //appends into div\n radioDiv.appendChild(frstpredicate);\n radioDiv.appendChild(secndpredicate);\n td.appendChild(radioDiv);\n if (this.options.type === 'string') {\n this.renderMatchCase(column, tr, td, '-xlflmtcase', predicates);\n }\n // Initialize AND RadioButton component.\n var andRadio = new RadioButton({\n label: this.getLocalizedLabel('AND'),\n name: 'default', checked: true,\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.push(andRadio);\n // Initialize OR RadioButton component.\n var orRadio = new RadioButton({\n label: this.getLocalizedLabel('OR'),\n name: 'default',\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.push(orRadio);\n var flValue = predicates && predicates.length === 2 ? predicates[1].predicate : 'and';\n if (flValue === 'and') {\n andRadio.checked = true;\n orRadio.checked = false;\n }\n else {\n orRadio.checked = true;\n andRadio.checked = false;\n }\n // Render initialized RadioButton.\n andRadio.appendTo(frstpredicate);\n orRadio.appendTo(secndpredicate);\n andRadio.element.nextElementSibling.classList.add('e-xlfl-radio-and');\n orRadio.element.nextElementSibling.classList.add('e-xlfl-radio-or');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ExcelFilterBase.prototype.removeObjects = function (elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var obj = elements_1[_i];\n if (obj && !obj.isDestroyed) {\n this.removeHandlersFromComponent(obj);\n obj.destroy();\n }\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderFlValueUI = function (column, optr, elementId, predicates, isFirst) {\n var value = this.parent.createElement('td', { className: 'e-xlfl-value' });\n optr.fieldElement.appendChild(value);\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var valueDiv = this.parent.createElement('div', { className: 'e-xlfl-valuediv' });\n var isFilteredCol = this.options.filteredColumns.some(function (col) { return column === col.field; });\n var fltrPredicates = this.options.filteredColumns.filter(function (col) { return col.field === column; });\n if (this.options.column.filterTemplate) {\n var data = {};\n var columnObj = this.options.column;\n if (isFilteredCol && elementId) {\n data = this.getExcelFilterData(elementId, data, columnObj, predicates, fltrPredicates);\n }\n var isReactCompiler = this.parent.isReact && typeof (this.options.column.filterTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + columnObj.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n }\n else {\n var element = this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, element);\n }\n if (isReactCompiler || isReactChild) {\n this.parent.renderTemplates(function () {\n valueDiv.querySelector('input').id = isComplex ? complexFieldName + elementId : column + elementId;\n value.appendChild(valueDiv);\n });\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.parent.isAngular ? valueDiv.children[0] : valueDiv.querySelector('input')).id = isComplex ?\n complexFieldName + elementId : column + elementId;\n value.appendChild(valueDiv);\n }\n }\n else {\n var valueInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId });\n valueDiv.appendChild(valueInput);\n value.appendChild(valueDiv);\n var flValue = void 0;\n var predicate = void 0;\n if (predicates && predicates.length > 0) {\n predicate = predicates.length === 2 ?\n (isFirst ? predicates[0] : predicates[1]) :\n (isFirst ? predicates[0] : undefined);\n flValue = (predicate && predicate.operator === optr.operator) ? predicate.value : undefined;\n if (isNullOrUndefined(flValue)) {\n flValue = undefined;\n }\n }\n var types = {\n 'string': this.renderAutoComplete.bind(this),\n 'number': this.renderNumericTextBox.bind(this),\n 'date': this.renderDate.bind(this),\n 'dateonly': this.renderDate.bind(this),\n 'datetime': this.renderDateTime.bind(this)\n };\n types[this.options.type](this.options, column, valueInput, flValue, this.parent.enableRtl);\n }\n };\n ExcelFilterBase.prototype.getExcelFilterData = function (elementId, data, columnObj, predicates, fltrPredicates) {\n var predIndex = elementId === '-xlfl-frstvalue' ? 0 : 1;\n if (elementId === '-xlfl-frstvalue' || fltrPredicates.length > 1) {\n data = { column: predicates instanceof Array ? predicates[parseInt(predIndex.toString(), 10)] : predicates };\n var indx = this.options.column.columnData && fltrPredicates.length > 1 ?\n (this.options.column.columnData.length === 1 ? 0 : 1) : predIndex;\n data[this.options.field] = columnObj.foreignKeyValue ?\n this.options.column.columnData[parseInt(indx.toString(), 10)][columnObj.foreignKeyValue] :\n fltrPredicates[parseInt(indx.toString(), 10)].value;\n if (this.options.foreignKeyValue) {\n data[this.options.foreignKeyValue] = this.options.column\n .columnData[parseInt(indx.toString(), 10)][columnObj.foreignKeyValue];\n }\n }\n return data;\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderMatchCase = function (column, tr, matchCase, elementId, predicates) {\n var matchCaseDiv = this.parent.createElement('div', { className: 'e-xlfl-matchcasediv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var matchCaseInput = this.parent.createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId, attrs: { 'type': 'checkbox' } });\n matchCaseDiv.appendChild(matchCaseInput);\n matchCase.appendChild(matchCaseDiv);\n var flValue = predicates && predicates.length > 0 ?\n (predicates && predicates.length === 2 ? predicates[1].matchCase : predicates[0].matchCase) :\n false;\n // Initialize Match Case check box.\n var checkbox = new CheckBox({\n label: this.getLocalizedLabel('MatchCase'),\n enableRtl: this.parent.enableRtl, checked: flValue,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.push(checkbox);\n // Render initialized CheckBox.\n checkbox.appendTo(matchCaseInput);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDate = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type) || options.format;\n var datePicker = new DatePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.push(datePicker);\n datePicker.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDateTime = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type);\n var dateTimePicker = new DateTimePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.push(dateTimePicker);\n dateTimePicker.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.completeAction = function (e) {\n e.result = distinctStringValues(e.result);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderNumericTextBox = function (options, column, inputValue, fValue, isRtl) {\n var numericTextBox = new NumericTextBox(extend({\n format: options.format,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n value: fValue,\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, options.column.filter.params));\n this.childRefs.push(numericTextBox);\n numericTextBox.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderAutoComplete = function (options, column, inputValue, fValue, isRtl) {\n var colObj = this.options.column;\n var isForeignColumn = this.isForeignColumn(colObj);\n var dataSource = isForeignColumn ? colObj.dataSource : options.dataSource;\n var fields = { value: isForeignColumn ? colObj.foreignKeyValue : column };\n var actObj = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n query: this.getQuery(),\n sortOrder: 'Ascending',\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n autofill: true,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n text: fValue\n }, colObj.filter.params));\n if (dataSource && 'result' in dataSource) {\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, this.getQuery());\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n actObj.dataSource = new DataManager(e);\n });\n }\n this.childRefs.push(actObj);\n var evt = { 'actionComplete': this.acActionComplete(actObj, column), 'focus': this.acFocus(actObj, column, options, inputValue) };\n registerEventHandlers(inputValue.id, [events.actionComplete, literals.focus], evt, this);\n actObj.addEventListener(literals.focus, this.eventHandlers[inputValue.id][literals.focus]);\n actObj.addEventListener(events.actionComplete, this.eventHandlers[inputValue.id][events.actionComplete]);\n actObj.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.acActionComplete = function (actObj, column) {\n return function (e) {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObject) {\n return isComplex ? performComplexDataOperation(actObj.fields.value, mapObject)\n : mapObject[actObj.fields.value];\n }).indexOf(isComplex ? performComplexDataOperation(actObj.fields.value, obj) :\n obj[actObj.fields.value]) === index;\n });\n };\n };\n ExcelFilterBase.prototype.acFocus = function (actObj, column, options, inputValue) {\n var _this = this;\n return function () {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var columnvalue = isComplex ? complexFieldName : column;\n actObj.filterType = _this.dlgDiv.querySelector('#' + columnvalue +\n (inputValue.id === (columnvalue + '-xlfl-frstvalue') ?\n '-xlfl-frstoptr' :\n '-xlfl-secndoptr')).ej2_instances[0].value;\n actObj.ignoreCase = options.type === 'string' ?\n !_this.dlgDiv.querySelector('#' + columnvalue + '-xlflmtcase').ej2_instances[0].checked :\n true;\n actObj.filterType = !isNullOrUndefined(actObj.filterType) ? actObj.filterType :\n 'equal';\n };\n };\n return ExcelFilterBase;\n}(CheckBoxFilterBase));\nexport { ExcelFilterBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ExcelFilterBase } from '../common/excel-filter-base';\nimport { CheckBoxFilter } from './checkbox-filter';\nimport * as events from '../base/constant';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilter = /** @class */ (function (_super) {\n __extends(ExcelFilter, _super);\n /**\n * Constructor for excelbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the Filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @param {object} customFltrOperators - specifies the customFltrOperators\n * @hidden\n */\n function ExcelFilter(parent, filterSettings, serviceLocator, customFltrOperators) {\n var _this = _super.call(this, parent, filterSettings, serviceLocator) || this;\n _this.parent = parent;\n _this.isresetFocus = true;\n _this.excelFilterBase = new ExcelFilterBase(parent, customFltrOperators);\n return _this;\n }\n /**\n * To destroy the excel filter.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilter.prototype.destroy = function () {\n this.excelFilterBase.closeDialog();\n };\n ExcelFilter.prototype.openDialog = function (options) {\n this.excelFilterBase.openDialog(options);\n };\n ExcelFilter.prototype.closeDialog = function () {\n this.excelFilterBase.closeDialog();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n ExcelFilter.prototype.clearCustomFilter = function (col) {\n this.excelFilterBase.clearFilter(col);\n };\n ExcelFilter.prototype.closeResponsiveDialog = function (isCustomFilter) {\n if (isCustomFilter) {\n this.excelFilterBase.removeDialog();\n }\n else {\n this.closeDialog();\n }\n };\n ExcelFilter.prototype.applyCustomFilter = function (args) {\n if (!args.isCustomFilter) {\n this.excelFilterBase.fltrBtnHandler();\n this.excelFilterBase.closeDialog();\n }\n else {\n this.excelFilterBase.filterBtnClick(args.col.field);\n }\n };\n ExcelFilter.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n this.excelFilterBase.filterByColumn(fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue);\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n ExcelFilter.prototype.getFilterUIInfo = function () {\n return this.excelFilterBase.getFilterUIInfo();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExcelFilter.prototype.getModuleName = function () {\n return 'excelFilter';\n };\n return ExcelFilter;\n}(CheckBoxFilter));\nexport { ExcelFilter };\n","import { EventHandler, isNullOrUndefined, extend, closest, getValue } from '@syncfusion/ej2-base';\nimport { getActualPropFromColl, isActionPrevent, getColumnByForeignKeyValue } from '../base/util';\nimport { remove, matches } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport { CellType, ResponsiveDialogAction } from '../base/enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport { FilterCellRenderer } from '../renderer/filter-cell-renderer';\nimport { parentsUntil } from '../base/util';\nimport { FilterMenuRenderer } from '../renderer/filter-menu-renderer';\nimport { CheckBoxFilter } from '../actions/checkbox-filter';\nimport { ExcelFilter } from '../actions/excel-filter';\nimport * as literals from '../base/string-literals';\nimport { Input } from '@syncfusion/ej2-inputs';\n/**\n *\n * The `Filter` module is used to handle filtering action.\n */\nvar Filter = /** @class */ (function () {\n /**\n * Constructor for Grid filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filterSettings\n * @param {ServiceLocator} serviceLocator - specifes the serviceLocator\n * @hidden\n */\n function Filter(parent, filterSettings, serviceLocator) {\n this.predicate = 'and';\n this.contentRefresh = true;\n this.filterByMethod = true;\n this.refresh = true;\n this.values = {};\n this.operators = {};\n this.cellText = {};\n this.nextFlMenuOpen = '';\n this.type = { 'Menu': FilterMenuRenderer, 'CheckBox': CheckBoxFilter, 'Excel': ExcelFilter };\n /** @hidden */\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.fltrDlgDetails = { field: '', isOpen: false };\n /** @hidden */\n this.skipNumberInput = ['=', ' ', '!'];\n this.skipStringInput = ['>', '<', '='];\n this.actualPredicate = {};\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * To render filter bar when filtering enabled.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.render = function (e) {\n if (DataUtil.getObject('args.isFrozen', e) || (this.parent.getFrozenMode() === literals.leftRight &&\n DataUtil.getObject('args.renderFrozenRightContent', e))) {\n return;\n }\n var gObj = this.parent;\n this.l10n = this.serviceLocator.getService('localization');\n this.getLocalizedCustomOperators();\n if (this.parent.filterSettings.type === 'FilterBar') {\n if (gObj.columns.length) {\n var fltrElem = this.parent.element.querySelector('.e-filterbar');\n if (fltrElem) {\n remove(fltrElem);\n }\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Filter, gObj);\n var cellrender = this.serviceLocator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Filter, new FilterCellRenderer(this.parent, this.serviceLocator));\n this.valueFormatter = this.serviceLocator.getService('valueFormatter');\n rowRenderer.element = this.parent.createElement('tr', { className: 'e-filterbar' });\n var row = this.generateRow();\n row.data = this.values;\n if (gObj.getFrozenMode() === 'Right') {\n var thead = gObj.getFrozenRightHeader().querySelector('thead');\n thead.appendChild(rowRenderer.element);\n }\n else {\n this.parent.getHeaderContent().querySelector('thead:not(.e-masked-thead)').appendChild(rowRenderer.element);\n }\n var rowdrag = this.parent.element.querySelector('.e-rowdragheader');\n this.element = rowRenderer.render(row, gObj.getColumns(), null, null, rowRenderer.element);\n var detail = this.element.querySelector('.e-detailheadercell');\n if (detail) {\n detail.className = 'e-filterbarcell e-mastercell';\n }\n if (rowdrag) {\n rowdrag.className = 'e-dragheadercell e-mastercell';\n }\n var gCells = [].slice.call(this.element.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n this.wireEvents();\n this.parent.notify(events.freezeRender, { case: 'filter' });\n }\n }\n };\n /**\n * To show the responsive custom filter dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n Filter.prototype.showCustomFilter = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog(this.column);\n };\n /**\n * To create the filter module.\n *\n * @param {Column} col - specifies the filtering column name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.setFilterModel = function (col) {\n var type = col.filter.type || this.parent.filterSettings.type;\n this.filterModule = new this.type[\"\" + type](this.parent, this.parent.filterSettings, this.serviceLocator, this.customOperators, this);\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.destroy();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.refreshing && (this.parent.isDestroyed || !this.parent.allowFiltering)) {\n this.filterSettings.columns = [];\n }\n this.updateFilterMsg();\n this.removeEventListener();\n this.unWireEvents();\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n var dropdownlist = [].slice.call(this.element.getElementsByClassName('e-filterbaroperator'));\n for (var i = 0; i < dropdownlist.length; i++) {\n if (dropdownlist[parseInt(i.toString(), 10)].ej2_instances[0]) {\n dropdownlist[parseInt(i.toString(), 10)].ej2_instances[0].destroy();\n }\n }\n }\n if (this.element) {\n if (this.element.parentElement) {\n remove(this.element);\n }\n var filterBarElement = this.parent.getHeaderContent().querySelector('.e-filterbar');\n if (this.parent.isFrozenGrid() && filterBarElement) {\n remove(filterBarElement);\n }\n }\n };\n Filter.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isFilter);\n }\n };\n Filter.prototype.generateRow = function () {\n var options = {};\n var row = new Row(options);\n row.cells = this.generateCells();\n return row;\n };\n Filter.prototype.generateCells = function () {\n //TODO: generate dummy column for group, detail, stacked row here for filtering;\n var cells = [];\n if (this.parent.allowGrouping) {\n for (var c = 0, len = this.parent.groupSettings.columns.length; c < len; c++) {\n cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n cells.push(this.generateCell({}, CellType.DetailHeader));\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n for (var _i = 0, _a = this.parent.getColumns(); _i < _a.length; _i++) {\n var dummy = _a[_i];\n cells.push(this.generateCell(dummy));\n }\n if (this.parent.getFrozenMode() === 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n return cells;\n };\n Filter.prototype.generateCell = function (column, cellType) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'rowId': '',\n 'column': column,\n 'cellType': cellType ? cellType : CellType.Filter,\n 'attributes': { title: this.l10n.getConstant('FilterbarTitle') }\n };\n return new Cell(opt);\n };\n /**\n * To update filterSettings when applying filter.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.updateModel = function () {\n var col = this.column.isForeignColumn() ? this.parent.getColumnByUid(this.column.uid) :\n this.parent.getColumnByField(this.fieldName);\n this.filterObjIndex = this.getFilteredColsIndexByField(col);\n this.prevFilterObject = this.filterSettings.columns[this.filterObjIndex];\n var arrayVal = Array.isArray(this.value) ? this.value : [this.value];\n var moduleName = this.parent.dataSource.adaptor && this.parent.dataSource.adaptor.getModuleName ? this.parent.dataSource.adaptor.getModuleName() : undefined;\n for (var i = 0, len = arrayVal.length; i < len; i++) {\n var field = col.isForeignColumn() ? col.foreignKeyValue : this.fieldName;\n var isMenuNotEqual = this.operator === 'notequal';\n this.currentFilterObject = {\n field: field, uid: col.uid, isForeignKey: col.isForeignColumn(), operator: this.operator,\n value: arrayVal[parseInt(i.toString(), 10)], predicate: this.predicate,\n matchCase: this.matchCase, ignoreAccent: this.ignoreAccent, actualFilterValue: {}, actualOperator: {}\n };\n var index = this.getFilteredColsIndexByField(col);\n if (index > -1 && !Array.isArray(this.value)) {\n this.filterSettings.columns[parseInt(index.toString(), 10)] = this.currentFilterObject;\n }\n else {\n this.filterSettings.columns.push(this.currentFilterObject);\n }\n if (!this.column.isForeignColumn() && isNullOrUndefined(this.value) && (this.operator === 'equal' ||\n this.operator === 'notequal') && (moduleName !== 'ODataAdaptor' && moduleName !== 'ODataV4Adaptor')) {\n for (var i_1 = 0; i_1 < this.filterSettings.columns.length; i_1++) {\n if (this.filterSettings.columns[\"\" + i_1].field === field &&\n (this.filterSettings.columns[\"\" + i_1].operator === 'equal' || this.filterSettings.columns[\"\" + i_1].operator === 'notequal')\n && isNullOrUndefined(this.filterSettings.columns[\"\" + i_1].value)) {\n this.filterSettings.columns.splice(i_1, 1);\n i_1 = i_1 - 1;\n }\n }\n if (col.type === 'string') {\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: ''\n });\n }\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: undefined\n });\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: null\n });\n }\n }\n // eslint-disable-next-line no-self-assign\n this.filterSettings.columns = this.filterSettings.columns;\n this.parent.dataBind();\n };\n Filter.prototype.getFilteredColsIndexByField = function (col) {\n var cols = this.filterSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].uid === col.uid || (col.isForeignColumn()\n && this.parent.getColumnByUid(col.uid).field === col.foreignKeyValue)) {\n return i;\n }\n }\n return -1;\n };\n /**\n * To trigger action complete event.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.onActionComplete = function (e) {\n var args = !this.isRemove ? {\n currentFilterObject: this.currentFilterObject,\n /* tslint:disable:no-string-literal */\n currentFilteringColumn: !isNullOrUndefined(this.column) ? this.column.field : undefined,\n /* tslint:enable:no-string-literal */\n columns: this.filterSettings.columns, requestType: 'filtering', type: events.actionComplete\n } : {\n requestType: 'filtering', type: events.actionComplete\n };\n this.parent.trigger(events.actionComplete, extend(e, args));\n this.isRemove = false;\n };\n Filter.prototype.wireEvents = function () {\n EventHandler.add(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate, this);\n };\n Filter.prototype.unWireEvents = function () {\n EventHandler.remove(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate);\n };\n Filter.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.parent.getHeaderTable().classList.add('e-sortfilter');\n this.render();\n }\n };\n Filter.prototype.refreshFilterValue = function () {\n this.parent.removeEventListener(events.beforeDataBound, this.refreshFilterValueFn);\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.columns.length &&\n !this.parent.getCurrentViewRecords().length) {\n this.initialEnd();\n }\n };\n Filter.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.filterSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.initialLoad = true;\n for (var _i = 0, _a = gObj.filterSettings.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n this.filterByColumn(col.field, col.operator, col.value, col.predicate, col.matchCase, col.ignoreAccent, col.actualFilterValue, col.actualOperator);\n }\n this.initialLoad = false;\n this.updateFilterMsg();\n this.contentRefresh = true;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.setFullScreenDialog, this.setFullScreenDialog, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.filterComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.keyPressed, this.keyUpHandler, this);\n this.parent.on(events.columnPositionChanged, this.columnPositionChanged, this);\n this.parent.on(events.headerRefreshed, this.render, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.filterMenuClose, this.filterMenuClose, this);\n this.docClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.docClickHandler, this);\n EventHandler.add(this.parent.element, 'mousedown', this.refreshClearIcon, this);\n this.parent.on(events.filterOpen, this.columnMenuFilter, this);\n this.parent.on(events.click, this.filterIconClickHandler, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n this.parent.on(events.closeFilterDialog, this.clickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.refreshFilterValueFn = this.refreshFilterValue.bind(this);\n this.parent.addEventListener(events.beforeDataBound, this.refreshFilterValueFn);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeEventListener = function () {\n EventHandler.remove(document, 'click', this.docClickHandler);\n EventHandler.remove(this.parent.element, 'mousedown', this.refreshClearIcon);\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.setFullScreenDialog, this.setFullScreenDialog);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.filterComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.keyPressed, this.keyUpHandler);\n this.parent.off(events.columnPositionChanged, this.columnPositionChanged);\n this.parent.off(events.headerRefreshed, this.render);\n this.parent.off(events.filterOpen, this.columnMenuFilter);\n this.parent.off(events.filterMenuClose, this.filterMenuClose);\n this.parent.off(events.click, this.filterIconClickHandler);\n this.parent.off(events.closeFilterDialog, this.clickHandler);\n this.parent.off(events.destroy, this.destroy);\n };\n Filter.prototype.refreshClearIcon = function (e) {\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' &&\n e.target.closest('th') && e.target.closest('th').classList.contains('e-filterbarcell') &&\n e.target.classList.contains('e-clear-icon')) {\n var targetText = e.target.previousElementSibling;\n Input.setValue(null, targetText, 'Never', true);\n if (this.filterSettings.mode === 'Immediate') {\n this.removeFilteredColsByField(targetText.id.slice(0, -14)); //Length of _filterBarcell = 14\n }\n }\n };\n Filter.prototype.filterMenuClose = function () {\n this.fltrDlgDetails.isOpen = false;\n };\n /**\n * Filters the Grid row by fieldName, filterOperator, and filterValue.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value which is used to filter records.\n * @param {string} predicate - Defines the relationship of one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, then the filter records\n * the exact match or
    filters records that are case insensitive (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n * @returns {void}\n */\n Filter.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n var _this = this;\n var gObj = this.parent;\n var filterCell;\n this.column = gObj.grabColumnByFieldFromAllCols(fieldName);\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator\n && isNullOrUndefined(this.column.filterBarTemplate) && isNullOrUndefined(this.column.filterTemplate)) {\n filterOperator = this.getOperatorName(fieldName);\n }\n if (filterOperator === 'like' && filterValue.indexOf('%') === -1) {\n filterValue = '%' + filterValue + '%';\n }\n if (!this.column) {\n return;\n }\n if (this.filterSettings.type === 'FilterBar') {\n filterCell = gObj.getHeaderContent().querySelector('[id=\\'' + this.column.field + '_filterBarcell\\']');\n }\n if (!isNullOrUndefined(this.column.allowFiltering) && !this.column.allowFiltering) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: this.column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: filterOperator, arg3: filterValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: actualFilterValue, arg8: actualOperator\n });\n return;\n }\n this.predicate = predicate ? predicate : Array.isArray(filterValue) ? 'or' : 'and';\n this.value = filterValue;\n this.matchCase = matchCase || false;\n this.ignoreAccent = this.ignoreAccent = !isNullOrUndefined(ignoreAccent) ? ignoreAccent : this.parent.filterSettings.ignoreAccent;\n this.fieldName = fieldName;\n this.operator = filterOperator;\n filterValue = !isNullOrUndefined(filterValue) ? filterValue.toString() : filterValue;\n if (filterValue === '') {\n filterValue = null;\n }\n if (this.column.type === 'number' || this.column.type === 'date') {\n this.matchCase = true;\n }\n gObj.getColumnHeaderByField(this.column.isForeignColumn() ? this.column.field : fieldName).setAttribute('aria-filtered', 'true');\n if (filterCell && this.filterSettings.type === 'FilterBar') {\n if ((filterValue && filterValue.length < 1) || (!this.filterByMethod &&\n this.checkForSkipInput(this.column, filterValue))) {\n this.filterStatusMsg = (filterValue && filterValue.length < 1) ? '' : this.l10n.getConstant('InvalidFilterMessage');\n this.updateFilterMsg();\n return;\n }\n if (filterCell.value !== filterValue) {\n filterCell.value = filterValue;\n }\n }\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n if (this.initialLoad && this.filterSettings.type === 'FilterBar') {\n filterCell.value = this.values[this.column.field];\n }\n }\n else {\n this.values[this.column.field] = filterValue; //this line should be above updateModel\n }\n var predObj = {\n field: this.fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: this.operator,\n value: this.value,\n type: this.column.type\n };\n var filterColumn = this.parent.filterSettings.columns.filter(function (fColumn) {\n return (fColumn.field === _this.fieldName);\n });\n if (filterColumn.length > 1 && !isNullOrUndefined(this.actualPredicate[this.fieldName])) {\n this.actualPredicate[this.fieldName].push(predObj);\n }\n else {\n this.actualPredicate[this.fieldName] = [predObj];\n }\n if (this.checkAlreadyColFiltered(this.column.field)) {\n return;\n }\n this.updateModel();\n };\n Filter.prototype.applyColumnFormat = function (filterValue) {\n var _this = this;\n var getFlvalue = (this.column.type === 'date' || this.column.type === 'datetime' || this.column.type === 'dateonly') ?\n new Date(filterValue) : parseFloat(filterValue);\n if ((this.column.type === 'date' || this.column.type === 'datetime' || this.column.type === 'dateonly') && filterValue &&\n Array.isArray(this.value) && filterValue.split(',').length > 1) {\n this.values[this.column.field] = ((filterValue).split(',')).map(function (val) {\n if (val === '') {\n val = null;\n }\n return _this.setFormatForFlColumn(new Date(val), _this.column);\n });\n }\n else {\n this.values[this.column.field] = this.setFormatForFlColumn(getFlvalue, this.column);\n }\n };\n // To skip the second time request to server while applying initial filtering - EJ2-44361\n Filter.prototype.skipUid = function (col) {\n var flag = true;\n var colLen = Object.keys((col));\n for (var i = 0; i < colLen.length; i++) {\n var key = Object.keys(col[colLen[parseInt(i.toString(), 10)]]);\n if (key.length === 1 && key[0] === 'uid') {\n flag = false;\n }\n }\n return flag;\n };\n Filter.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'columns':\n // eslint-disable-next-line no-case-declarations\n var col = 'columns';\n // eslint-disable-next-line no-case-declarations\n var args = {\n currentFilterObject: this.currentFilterObject, currentFilteringColumn: this.column ?\n this.column.field : undefined, action: 'filter', columns: this.filterSettings.columns,\n requestType: 'filtering', type: events.actionBegin, cancel: false\n };\n if (this.contentRefresh && this.skipUid(e.properties[\"\" + col])) {\n this.parent.notify(events.modelChanged, args);\n if (args.cancel) {\n if (isNullOrUndefined(this.prevFilterObject)) {\n this.filterSettings.columns.splice(this.filterSettings.columns.length - 1, 1);\n }\n else {\n this.filterSettings.columns[this.filterObjIndex] = this.prevFilterObject;\n }\n return;\n }\n this.updateFilterIcon();\n this.refreshFilterSettings();\n this.updateFilterMsg();\n this.updateFilter();\n }\n break;\n case 'showFilterBarStatus':\n if (e.properties[\"\" + prop]) {\n this.updateFilterMsg();\n }\n else if (this.parent.allowPaging) {\n this.parent.updateExternalMessage('');\n }\n break;\n case 'showFilterBarOperator':\n case 'type':\n this.parent.refreshHeader();\n this.refreshFilterSettings();\n break;\n }\n }\n };\n Filter.prototype.refreshFilterSettings = function () {\n if (this.filterSettings.type === 'FilterBar') {\n for (var i = 0; i < this.filterSettings.columns.length; i++) {\n this.column = this.parent.grabColumnByUidFromAllCols(this.filterSettings.columns[parseInt(i.toString(), 10)].uid);\n var filterValue = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n filterValue = !isNullOrUndefined(filterValue) && filterValue.toString();\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n }\n else {\n var key = this.filterSettings.columns[parseInt(i.toString(), 10)].field;\n this.values[\"\" + key] = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n }\n var filterElement = this.getFilterBarElement(this.column.field);\n if (filterElement) {\n if (this.cellText[this.filterSettings.columns[parseInt(i.toString(), 10)].field] !== ''\n && !isNullOrUndefined(this.cellText[this.filterSettings.columns[parseInt(i.toString(), 10)].field])) {\n filterElement.value = this.cellText[this.column.field];\n }\n else {\n filterElement.value = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n }\n }\n }\n if (this.filterSettings.columns.length === 0) {\n var col = this.parent.getColumns();\n for (var i = 0; i < col.length; i++) {\n var filterElement = this.getFilterBarElement(col[parseInt(i.toString(), 10)].field);\n if (filterElement && filterElement.value !== '') {\n filterElement.value = '';\n delete this.values[col[parseInt(i.toString(), 10)].field];\n }\n }\n }\n }\n };\n Filter.prototype.updateFilterIcon = function () {\n if (this.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrIconElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrIconElement.length; i < len; i++) {\n fltrIconElement[parseInt(i.toString(), 10)].removeAttribute('aria-filtered');\n fltrIconElement[parseInt(i.toString(), 10)].classList.remove('e-filtered');\n }\n }\n };\n Filter.prototype.getFilterBarElement = function (col) {\n var selector = '[id=\\'' + col + '_filterBarcell\\']';\n var filterElement;\n if (selector && !isNullOrUndefined(this.element)) {\n filterElement = this.element.querySelector(selector);\n }\n return filterElement;\n };\n /**\n * @private\n * @returns {void}\n */\n Filter.prototype.refreshFilter = function () {\n this.refreshFilterSettings();\n this.updateFilterMsg();\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - returns the fields\n * @returns {void}\n */\n Filter.prototype.clearFiltering = function (fields) {\n var _this = this;\n var cols = getActualPropFromColl(this.filterSettings.columns);\n if (!isNullOrUndefined(fields)) {\n this.refresh = false;\n fields.forEach(function (field) { _this.removeFilteredColsByField(field, false); });\n this.parent.setProperties({ filterSettings: { columns: this.filterSettings.columns } }, true);\n this.parent.renderModule.refresh();\n this.refresh = true;\n return;\n }\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearFiltering });\n return;\n }\n for (var i = 0; i < cols.length; i++) {\n cols[parseInt(i.toString(), 10)].uid = cols[parseInt(i.toString(), 10)].uid\n || this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field).uid;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredcols = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n this.refresh = false;\n for (var i = 0, len = filteredcols.length; i < len; i++) {\n this.removeFilteredColsByField(this.parent.getColumnByUid(filteredcols[parseInt(i.toString(), 10)]).field, false);\n }\n this.refresh = true;\n if (filteredcols.length) {\n this.parent.renderModule.refresh();\n }\n if (this.parent.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrElement.length; i < len; i++) {\n fltrElement[0].removeAttribute('aria-filtered');\n fltrElement[0].classList.remove('e-filtered');\n }\n }\n this.isRemove = true;\n this.filterStatusMsg = '';\n this.updateFilterMsg();\n };\n Filter.prototype.checkAlreadyColFiltered = function (field) {\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n if (col.field === field && col.value === this.value &&\n col.operator === this.operator && col.predicate === this.predicate) {\n return true;\n }\n }\n return false;\n };\n Filter.prototype.columnMenuFilter = function (args) {\n this.column = args.col;\n var ele = closest(args.target, '#' + args.id);\n if (args.isClose && !ele) {\n this.filterModule.closeDialog();\n }\n else if (ele) {\n this.filterDialogOpen(this.column, args.target);\n }\n };\n Filter.prototype.filterDialogOpen = function (col, target, left, top) {\n if (this.filterModule) {\n this.filterModule.closeDialog();\n }\n this.setFilterModel(col);\n this.filterModule.openDialog(this.createOptions(col, target, left, top));\n };\n /**\n * Create filter dialog options\n *\n * @param {Column} col - Filtering column detail.\n * @param {Element} target - Filter dialog target.\n * @param {number} left - Filter dialog left position.\n * @param {number} top - Filter dialog top position.\n * @returns {Object} returns the created dialog options\n * @hidden\n */\n Filter.prototype.createOptions = function (col, target, left, top) {\n var gObj = this.parent;\n var dataSource = col.filter.dataSource || gObj.dataSource && 'result' in gObj.dataSource ? gObj.dataSource :\n gObj.getDataModule().dataManager;\n var type = col.filter.type || this.parent.filterSettings.type;\n var options = {\n type: col.type, field: col.field, displayName: col.headerText,\n dataSource: dataSource, format: col.format, height: 800, columns: gObj.getColumns(),\n filteredColumns: gObj.filterSettings.columns, target: target, dataManager: gObj.getDataModule().dataManager,\n formatFn: col.getFormatter(), ignoreAccent: gObj.filterSettings.ignoreAccent,\n parserFn: col.getParser(), query: gObj.query, template: col.getFilterItemTemplate(),\n hideSearchbox: isNullOrUndefined(col.filter.hideSearchbox) ? false : col.filter.hideSearchbox,\n handler: this.filterHandler.bind(this), localizedStrings: gObj.getLocaleConstants(),\n position: { X: left, Y: top }, column: col, foreignKeyValue: col.foreignKeyValue,\n actualPredicate: this.actualPredicate, localeObj: gObj.localeObj,\n isRemote: gObj.getDataModule().isRemote(), allowCaseSensitive: this.filterSettings.enableCaseSensitivity,\n isResponsiveFilter: this.parent.enableAdaptiveUI,\n operator: this.actualPredicate[col.field] && type === 'Menu' ? this.actualPredicate[col.field][0].operator : 'equal'\n };\n return options;\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n var fCell;\n var cols = this.filterSettings.columns;\n if (isActionPrevent(this.parent)) {\n var args = { instance: this, handler: this.removeFilteredColsByField, arg1: field, arg2: isClearFilterBar };\n this.parent.notify(events.preventBatch, args);\n return;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredColsUid = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n var _loop_1 = function (i, len) {\n cols[parseInt(i.toString(), 10)].uid = cols[parseInt(i.toString(), 10)].uid\n || this_1.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field).uid;\n var len_1 = cols.length;\n var column = this_1.parent.grabColumnByUidFromAllCols(filteredColsUid[parseInt(i.toString(), 10)]);\n if (column.field === field || (column.field === column.foreignKeyValue && column.isForeignColumn())) {\n var currentPred = this_1.filterSettings.columns.filter(function (e) {\n return e.uid === column.uid;\n })[0];\n if (this_1.filterSettings.type === 'FilterBar' && !isClearFilterBar) {\n var selector = '[id=\\'' + column.field + '_filterBarcell\\']';\n fCell = this_1.parent.getHeaderContent().querySelector(selector);\n if (fCell) {\n fCell.value = '';\n delete this_1.values[\"\" + field];\n }\n }\n while (len_1--) {\n if (cols[parseInt(len_1.toString(), 10)].uid === column.uid) {\n cols.splice(len_1, 1);\n }\n }\n var fltrElement = this_1.parent.getColumnHeaderByField(column.field);\n fltrElement.removeAttribute('aria-filtered');\n if (this_1.filterSettings.type !== 'FilterBar' || this_1.parent.showColumnMenu) {\n var iconClass = this_1.parent.showColumnMenu && column.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n fltrElement.querySelector(iconClass).classList.remove('e-filtered');\n }\n this_1.isRemove = true;\n if (this_1.actualPredicate[\"\" + field]) {\n delete this_1.actualPredicate[\"\" + field];\n }\n if (this_1.values[\"\" + field]) {\n delete this_1.values[\"\" + field];\n }\n if (this_1.refresh) {\n this_1.parent.notify(events.modelChanged, {\n requestType: 'filtering', type: events.actionBegin, currentFilterObject: currentPred,\n currentFilterColumn: column, action: 'clearFilter'\n });\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0, len = filteredColsUid.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n this.updateFilterMsg();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Filter.prototype.getModuleName = function () {\n return 'filter';\n };\n Filter.prototype.keyUpHandlerImmediate = function (e) {\n if (e.keyCode !== 13) {\n this.keyUpHandler(e);\n }\n };\n Filter.prototype.keyUpHandler = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (target && matches(target, '.e-filterbar input')) {\n var closeHeaderEle = closest(target, 'th.e-filterbarcell');\n this.column = gObj.getColumnByUid(closeHeaderEle.getAttribute('e-mappinguid'));\n if (!this.column) {\n return;\n }\n if (e.action === 'altDownArrow' && this.parent.filterSettings.showFilterBarOperator) {\n var dropDownListInput = closest(target, 'span').querySelector('.e-filterbaroperator');\n dropDownListInput.ej2_instances[0].showPopup();\n dropDownListInput.focus();\n }\n if ((this.filterSettings.mode === 'Immediate' || (e.keyCode === 13 &&\n !e.target.classList.contains('e-filterbaroperator')))\n && e.keyCode !== 9 && !this.column.filterTemplate) {\n this.value = target.value.trim();\n this.processFilter(e);\n }\n }\n if (e.action === 'altDownArrow' && this.filterSettings.type !== 'FilterBar') {\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n this.openMenuByField(column.field);\n this.parent.focusModule.clearIndicator();\n }\n }\n if (e.action === 'escape' && this.filterSettings.type === 'Menu' && this.filterModule) {\n this.filterModule.closeDialog();\n gObj.notify(events.restoreFocus, {});\n }\n };\n Filter.prototype.updateCrossIcon = function (element) {\n if (element.value.length) {\n element.nextElementSibling.classList.remove('e-hide');\n }\n };\n Filter.prototype.updateFilterMsg = function () {\n if (this.filterSettings.type === 'FilterBar') {\n var gObj = this.parent;\n var getFormatFlValue = void 0;\n var columns = this.filterSettings.columns;\n var column = void 0;\n if (!this.filterSettings.showFilterBarStatus) {\n return;\n }\n if (columns.length > 0 && this.filterStatusMsg !== this.l10n.getConstant('InvalidFilterMessage')) {\n this.filterStatusMsg = '';\n for (var index = 0; index < columns.length; index++) {\n column = gObj.grabColumnByUidFromAllCols(columns[parseInt(index.toString(), 10)].uid)\n || gObj.grabColumnByFieldFromAllCols(columns[parseInt(index.toString(), 10)].field);\n if (index) {\n this.filterStatusMsg += ' && ';\n }\n if (!isNullOrUndefined(column.format)) {\n var flValue = (column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') ?\n this.valueFormatter.fromView(this.values[column.field], column.getParser(), (column.type === 'dateonly' ? 'date' : column.type)) :\n this.values[column.field];\n if (!(column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly')) {\n var formater = this.serviceLocator.getService('valueFormatter');\n getFormatFlValue = formater.toView(flValue, column.getParser()).toString();\n }\n else {\n getFormatFlValue = this.setFormatForFlColumn(flValue, column);\n }\n this.filterStatusMsg += column.headerText + ': ' + getFormatFlValue;\n }\n else {\n this.filterStatusMsg += column.headerText + ': ' + this.values[column.field];\n }\n }\n }\n if (gObj.allowPaging) {\n gObj.updateExternalMessage(this.filterStatusMsg);\n }\n //TODO: virtual paging\n this.filterStatusMsg = '';\n }\n };\n Filter.prototype.setFormatForFlColumn = function (value, column) {\n var formater = this.serviceLocator.getService('valueFormatter');\n return formater.toView(value, column.getFormatter()).toString();\n };\n Filter.prototype.checkForSkipInput = function (column, value) {\n var isSkip;\n if (column.type === 'number') {\n if (DataUtil.operatorSymbols[\"\" + value] || this.skipNumberInput.indexOf(value) > -1) {\n isSkip = true;\n }\n }\n else if (column.type === 'string') {\n for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {\n var val = value_1[_i];\n if (this.skipStringInput.indexOf(val) > -1) {\n isSkip = true;\n }\n }\n }\n return isSkip;\n };\n Filter.prototype.processFilter = function (e) {\n this.stopTimer();\n this.startTimer(e);\n };\n Filter.prototype.startTimer = function (e) {\n var _this = this;\n this.timer = window.setInterval(function () { _this.onTimerTick(); }, e.keyCode === 13 ? 0 : this.filterSettings.immediateModeDelay);\n };\n Filter.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n Filter.prototype.onTimerTick = function () {\n var selector = '[id=\\'' + this.column.field + '_filterBarcell\\']';\n var filterElement = this.element.querySelector(selector);\n if (!filterElement && this.parent.isFrozenGrid()) {\n filterElement = this.parent.getHeaderContent().querySelector(selector);\n }\n var filterValue;\n this.cellText[this.column.field] = filterElement.value;\n this.stopTimer();\n if (!isNullOrUndefined(this.column.filterBarTemplate)) {\n var templateRead = this.column.filterBarTemplate.read;\n if (typeof templateRead === 'string') {\n templateRead = getValue(templateRead, window);\n }\n if (!isNullOrUndefined(templateRead)) {\n this.value = templateRead.call(this, filterElement);\n }\n }\n else {\n filterValue = JSON.parse(JSON.stringify(filterElement.value));\n }\n if (isNullOrUndefined(this.value) || this.value === '') {\n this.removeFilteredColsByField(this.column.field);\n return;\n }\n this.validateFilterValue(this.value);\n this.filterByMethod = false;\n this.filterByColumn(this.column.field, this.operator, this.value, this.predicate, this.filterSettings.enableCaseSensitivity, this.ignoreAccent);\n this.filterByMethod = true;\n filterElement.value = filterValue;\n this.updateFilterMsg();\n };\n Filter.prototype.validateFilterValue = function (value) {\n var skipInput;\n var index;\n this.matchCase = this.filterSettings.enableCaseSensitivity;\n switch (this.column.type) {\n case 'number':\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n skipInput = ['>', '<', '=', '!'];\n for (var i = 0; i < value.length; i++) {\n if (skipInput.indexOf(value[parseInt(i.toString(), 10)]) > -1) {\n index = i;\n break;\n }\n }\n this.getOperator(value.substring(index));\n if (index !== 0) {\n this.value = value.substring(0, index);\n }\n if (this.value !== '' && value.length >= 1) {\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n }\n if (isNaN(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n break;\n case 'date':\n case 'datetime':\n this.operator = this.filterOperators.equal;\n if (this.value !== '' && !(this.value instanceof Date)) {\n this.getOperator(value);\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n if (isNullOrUndefined(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n }\n break;\n case 'string':\n this.matchCase = false;\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n if (value.indexOf('*') !== -1 || value.indexOf('?') !== -1 || value.indexOf('%3f') !== -1) {\n this.operator = this.filterOperators.wildCard;\n }\n else if (value.indexOf('%') !== -1) {\n this.operator = this.filterOperators.like;\n }\n else {\n this.operator = this.filterOperators.startsWith;\n }\n }\n break;\n case 'boolean':\n if (value.toLowerCase() === 'true' || value === '1') {\n this.value = true;\n }\n else if (value.toLowerCase() === 'false' || value === '0') {\n this.value = false;\n }\n else if (value.length) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n this.operator = this.filterOperators.equal;\n break;\n default:\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n }\n };\n Filter.prototype.getOperator = function (value) {\n var singleOp = value.charAt(0);\n var multipleOp = value.slice(0, 2);\n var operators = extend({ '=': this.filterOperators.equal, '!': this.filterOperators.notEqual }, DataUtil.operatorSymbols);\n // eslint-disable-next-line no-prototype-builtins\n if (operators.hasOwnProperty(singleOp) || operators.hasOwnProperty(multipleOp)) {\n this.operator = operators[\"\" + singleOp];\n this.value = value.substring(1);\n if (!this.operator) {\n this.operator = operators[\"\" + multipleOp];\n this.value = value.substring(2);\n }\n }\n if (this.operator === this.filterOperators.lessThan || this.operator === this.filterOperators.greaterThan) {\n if (this.value.charAt(0) === '=') {\n this.operator = this.operator + 'orequal';\n this.value = this.value.substring(1);\n }\n }\n };\n Filter.prototype.columnPositionChanged = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n return;\n }\n };\n Filter.prototype.getLocalizedCustomOperators = function () {\n var numOptr = [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'greaterthan', text: this.l10n.getConstant('GreaterThan') },\n { value: 'greaterthanorequal', text: this.l10n.getConstant('GreaterThanOrEqual') },\n { value: 'lessthan', text: this.l10n.getConstant('LessThan') },\n { value: 'lessthanorequal', text: this.l10n.getConstant('LessThanOrEqual') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') },\n { value: 'isnull', text: this.l10n.getConstant('IsNull') },\n { value: 'isnotnull', text: this.l10n.getConstant('NotNull') }\n ];\n this.customOperators = {\n stringOperator: [\n { value: 'startswith', text: this.l10n.getConstant('StartsWith') },\n { value: 'endswith', text: this.l10n.getConstant('EndsWith') },\n { value: 'contains', text: this.l10n.getConstant('Contains') },\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'isempty', text: this.l10n.getConstant('IsEmpty') },\n { value: 'doesnotstartwith', text: this.l10n.getConstant('NotStartsWith') },\n { value: 'doesnotendwith', text: this.l10n.getConstant('NotEndsWith') },\n { value: 'doesnotcontain', text: this.l10n.getConstant('NotContains') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') },\n { value: 'isnotempty', text: this.l10n.getConstant('IsNotEmpty') },\n { value: 'like', text: this.l10n.getConstant('Like') }\n ],\n numberOperator: numOptr,\n dateOperator: numOptr,\n datetimeOperator: numOptr,\n dateonlyOperator: numOptr,\n booleanOperator: [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') }\n ]\n };\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.openMenuByField = function (field) {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.showCustomFilter(false);\n return;\n }\n var column = gObj.getColumnByField(field);\n var header = gObj.getColumnHeaderByField(field);\n var target = header.querySelector('.e-filtermenudiv');\n if (!target) {\n return;\n }\n var gClient = gObj.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n this.filterDialogOpen(column, target, fClient.right - gClient.left, fClient.bottom - gClient.top);\n };\n Filter.prototype.filterIconClickHandler = function (e) {\n var target = e.target;\n if (target.classList.contains('e-filtermenudiv') && (this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel')) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(parentsUntil(target, 'e-headercell').firstElementChild.getAttribute('e-mappinguid'));\n this.column = col;\n if (this.fltrDlgDetails.field === col.field && this.fltrDlgDetails.isOpen) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.closeDialog();\n }\n this.fltrDlgDetails = { field: col.field, isOpen: true };\n this.openMenuByField(col.field);\n }\n };\n Filter.prototype.clickHandler = function (e) {\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n if (parentsUntil(e.target, 'e-filterbarcell') &&\n e.target.classList.contains('e-input-group-icon')) {\n var filterOperatorElement = closest(e.target, 'div').\n querySelector('.e-filterbaroperator');\n if (filterOperatorElement) {\n filterOperatorElement.focus();\n }\n else {\n e.target.focus();\n }\n }\n if (e.target.classList.contains('e-list-item')) {\n var inputId = document.querySelector('.e-popup-open').getAttribute('id').replace('_popup', '');\n if (inputId.indexOf('grid-column') !== -1) {\n closest(document.getElementById(inputId), 'div').querySelector('.e-filtertext').focus();\n }\n }\n }\n if (this.filterSettings.mode === 'Immediate' || this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel') {\n var target = e.target;\n var datepickerEle = target.classList.contains('e-day'); // due to datepicker popup cause\n var dialog = parentsUntil(this.parent.element, 'e-dialog');\n var hasDialog = false;\n var popupEle = parentsUntil(target, 'e-popup');\n var hasDialogClosed = this.parent.element.classList.contains('e-device') ? document.querySelector('.e-filter-popup')\n : this.parent.element.querySelector('.e-filter-popup');\n if (dialog && popupEle) {\n hasDialog = dialog.id === popupEle.id;\n }\n if ((hasDialogClosed && (parentsUntil(target, 'e-excel-ascending') ||\n parentsUntil(target, 'e-excel-descending')))) {\n this.filterModule.closeDialog(target);\n }\n if (parentsUntil(target, 'e-filter-popup') || target.classList.contains('e-filtermenudiv')) {\n return;\n }\n else if (this.filterModule && (!parentsUntil(target, 'e-popup-wrapper')\n && (!closest(target, '.e-filter-item.e-menu-item'))) && !datepickerEle) {\n if ((hasDialog && (!parentsUntil(target, 'e-filter-popup'))\n && (!parentsUntil(target, 'e-popup-flmenu'))) || (!popupEle && hasDialogClosed)) {\n this.filterModule.isresetFocus = parentsUntil(target, 'e-grid') &&\n parentsUntil(target, 'e-grid').id === this.parent.element.id;\n this.filterModule.closeDialog(target);\n }\n }\n }\n };\n Filter.prototype.filterHandler = function (args) {\n this.actualPredicate[args.field] = args.actualPredicate;\n var dataManager = new DataManager(this.filterSettings.columns);\n var query = new Query().where('field', this.filterOperators.equal, args.field);\n var result = dataManager.executeLocal(query);\n for (var i = 0; i < result.length; i++) {\n var index = -1;\n for (var j = 0; j < this.filterSettings.columns.length; j++) {\n if (result[parseInt(i.toString(), 10)].field === this.filterSettings.columns[parseInt(j.toString(), 10)].field) {\n index = j;\n break;\n }\n }\n if (index !== -1) {\n this.filterSettings.columns.splice(index, 1);\n }\n }\n if (this.values[args.field]) {\n delete this.values[args.field];\n }\n var col = this.parent.getColumnByField(args.field);\n var iconClass = this.parent.showColumnMenu && col.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var filterIconElement = this.parent.getColumnHeaderByField(args.field).querySelector(iconClass);\n if (args.action === 'filtering') {\n this.filterSettings.columns = this.filterSettings.columns.concat(args.filterCollection);\n if (this.filterSettings.columns.length && filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n }\n else {\n if (filterIconElement) {\n filterIconElement.classList.remove('e-filtered');\n }\n args.requestType = 'filtering';\n this.parent.renderModule.refresh(args); //hot-fix onpropertychanged not working for object { array }\n }\n this.parent.dataBind();\n };\n Filter.prototype.updateFilter = function () {\n var cols = this.filterSettings.columns;\n this.actualPredicate = {};\n for (var i = 0; i < cols.length; i++) {\n this.column = this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field) ||\n getColumnByForeignKeyValue(cols[parseInt(i.toString(), 10)].field, this.parent.getForeignKeyColumns());\n var fieldName = cols[parseInt(i.toString(), 10)].field;\n if (!this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field)) {\n fieldName = getColumnByForeignKeyValue(cols[parseInt(i.toString(), 10)].field, this.parent.getForeignKeyColumns()).field;\n }\n this.refreshFilterIcon(fieldName, cols[parseInt(i.toString(), 10)].operator, cols[parseInt(i.toString(), 10)].value, cols[parseInt(i.toString(), 10)].type, cols[parseInt(i.toString(), 10)].predicate, cols[parseInt(i.toString(), 10)].matchCase, cols[parseInt(i.toString(), 10)].ignoreAccent, cols[parseInt(i.toString(), 10)].uid);\n }\n };\n Filter.prototype.refreshFilterIcon = function (fieldName, operator, value, type, predicate, matchCase, ignoreAccent, uid) {\n var obj = {\n field: fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: operator,\n value: value,\n type: type\n };\n if (this.actualPredicate[\"\" + fieldName]) {\n this.actualPredicate[\"\" + fieldName].push(obj);\n }\n else {\n this.actualPredicate[\"\" + fieldName] = [obj];\n }\n var field = uid ? this.parent.grabColumnByUidFromAllCols(uid).field : fieldName;\n this.addFilteredClass(field);\n };\n Filter.prototype.addFilteredClass = function (fieldName) {\n var filterIconElement;\n var col = this.parent.getColumnByField(fieldName);\n if (this.parent.showColumnMenu && col.showColumnMenu) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-columnmenu');\n }\n else if (col) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-icon-filter');\n }\n if (filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns the FilterUI\n */\n Filter.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {string} returns the operator name\n * @hidden\n */\n Filter.prototype.getOperatorName = function (field) {\n return document.getElementById(this.parent.getColumnByField(field).uid).ej2_instances[0].value;\n };\n /**\n * Renders checkbox items in Menu filter dialog.\n *\n * @returns {void}\n */\n Filter.prototype.renderCheckboxOnFilterMenu = function () {\n return this.filterModule.renderCheckBoxMenu();\n };\n return Filter;\n}());\nexport { Filter };\n","import { print as printWindow, createElement, detach, classList, selectAll, extend } from '@syncfusion/ej2-base';\nimport { getPrintGridModel } from '../base/util';\nimport { Grid } from '../base/grid';\nimport * as events from '../base/constant';\nimport { Deferred } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * @returns {string[]} returns the cloned property\n * @hidden\n */\nexport function getCloneProperties() {\n return ['aggregates', 'allowGrouping', 'allowFiltering', 'allowMultiSorting', 'allowReordering', 'allowSorting',\n 'allowTextWrap', 'childGrid', 'columns', 'currentViewData', 'dataSource', 'detailTemplate', 'enableAltRow',\n 'enableColumnVirtualization', 'filterSettings', 'gridLines',\n 'groupSettings', 'height', 'locale', 'pageSettings', 'printMode', 'query', 'queryString', 'enableRtl',\n 'rowHeight', 'rowTemplate', 'sortSettings', 'textWrapSettings', 'allowPaging', 'hierarchyPrintMode', 'searchSettings',\n 'queryCellInfo', 'beforeDataBound'];\n}\n/**\n *\n * The `Print` module is used to handle print action.\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for the Grid print module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {Scroll} scrollModule - specifies the scroll module\n * @hidden\n */\n function Print(parent, scrollModule) {\n this.isAsyncPrint = false;\n this.defered = new Deferred();\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.isContentReady(), this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.on(events.onEmpty, this.onEmpty.bind(this));\n this.parent.on(events.hierarchyPrint, this.hierarchyPrint, this);\n this.scrollModule = scrollModule;\n }\n Print.prototype.isContentReady = function () {\n var _this = this;\n if (this.isPrintGrid() && (this.parent.hierarchyPrintMode === 'None' || !this.parent.childGrid)) {\n return this.contentReady;\n }\n return function () {\n _this.defered.promise.then(function () {\n _this.contentReady();\n });\n if (_this.isPrintGrid()) {\n _this.hierarchyPrint();\n }\n };\n };\n Print.prototype.hierarchyPrint = function () {\n this.removeColGroup(this.parent);\n var printGridObj = window.printGridObj;\n if (printGridObj && !printGridObj.element.querySelector('[aria-busy=true')) {\n printGridObj.printModule.defered.resolve();\n }\n };\n /**\n * By default, prints all the Grid pages and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./printmode/).\n *\n * @returns {void}\n */\n Print.prototype.print = function () {\n this.renderPrintGrid();\n };\n Print.prototype.onEmpty = function () {\n if (this.isPrintGrid()) {\n this.contentReady();\n }\n };\n Print.prototype.actionBegin = function () {\n if (this.isPrintGrid()) {\n this.isAsyncPrint = true;\n }\n };\n Print.prototype.renderPrintGrid = function () {\n var gObj = this.parent;\n var element = createElement('div', {\n id: this.parent.element.id + '_print', className: gObj.element.className + ' e-print-grid'\n });\n element.classList.remove('e-gridhover');\n document.body.appendChild(element);\n var printGrid = new Grid(getPrintGridModel(gObj, gObj.hierarchyPrintMode));\n for (var i = 0; i < printGrid.columns.length; i++) {\n printGrid.columns[parseInt(i.toString(), 10)] = extend({}, printGrid.columns[parseInt(i.toString(), 10)]);\n if (gObj.isFrozenGrid() && !gObj.getFrozenColumns()) {\n printGrid.columns[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.isAngular) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n printGrid.viewContainerRef = this.parent.viewContainerRef;\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n printGrid.load = function () { };\n printGrid.query = gObj.getQuery().clone();\n window.printGridObj = printGrid;\n printGrid.isPrinting = true;\n var modules = printGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n printGrid.setInjectedModules(injectedModues);\n }\n gObj.notify(events.printGridInit, { element: element, printgrid: printGrid });\n this.parent.log('exporting_begin', this.getModuleName());\n printGrid.registeredTemplate = this.parent.registeredTemplate;\n printGrid.isVue = this.parent.isVue;\n printGrid.appendTo(element);\n if (!gObj.isVue3) {\n printGrid.trigger = gObj.trigger;\n }\n };\n Print.prototype.contentReady = function () {\n if (this.isPrintGrid()) {\n var gObj = this.parent;\n if (this.isAsyncPrint) {\n this.printGrid();\n return;\n }\n var args = {\n requestType: 'print',\n element: gObj.element,\n selectedRows: gObj.getContentTable().querySelectorAll('tr[aria-selected=\"true\"]'),\n cancel: false,\n hierarchyPrintMode: gObj.hierarchyPrintMode\n };\n if (!this.isAsyncPrint) {\n gObj.trigger(events.beforePrint, args);\n }\n if (args.cancel) {\n detach(gObj.element);\n return;\n }\n if (!this.isAsyncPrint) {\n this.printGrid();\n }\n }\n };\n Print.prototype.printGrid = function () {\n var gObj = this.parent;\n // Height adjustment on print grid\n if (gObj.height !== 'auto') { // if scroller enabled\n var cssProps = this.scrollModule.getCssProperties();\n var contentDiv = gObj.element.querySelector('.' + literals.content);\n var headerDiv = gObj.element.querySelector('.' + literals.gridHeader);\n contentDiv.style.height = 'auto';\n contentDiv.style.overflowY = 'auto';\n headerDiv.style[cssProps.padding] = '';\n headerDiv.firstElementChild.style[cssProps.border] = '';\n }\n // Grid alignment adjustment on grouping\n if (gObj.allowGrouping) {\n if (!gObj.groupSettings.columns.length) {\n gObj.element.querySelector('.e-groupdroparea').style.display = 'none';\n }\n else {\n this.removeColGroup(gObj);\n }\n }\n // hide horizontal scroll\n for (var _i = 0, _a = [].slice.call(gObj.element.getElementsByClassName(literals.content)); _i < _a.length; _i++) {\n var element = _a[_i];\n element.style.overflowX = 'hidden';\n }\n // Hide the waiting popup\n var waitingPop = [].slice.call(gObj.element.getElementsByClassName('e-spin-show'));\n for (var _b = 0, _c = [].slice.call(waitingPop); _b < _c.length; _b++) {\n var element = _c[_b];\n classList(element, ['e-spin-hide'], ['e-spin-show']);\n }\n this.printGridElement(gObj);\n gObj.isPrinting = false;\n delete window.printGridObj;\n var args = {\n element: gObj.element\n };\n gObj.trigger(events.printComplete, args);\n gObj.destroy();\n this.parent.log('exporting_complete', this.getModuleName());\n };\n Print.prototype.printGridElement = function (gObj) {\n classList(gObj.element, ['e-print-grid-layout'], ['e-print-grid']);\n if (gObj.isPrinting) {\n detach(gObj.element);\n }\n this.printWind = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWind.moveTo(0, 0);\n this.printWind.resizeTo(screen.availWidth, screen.availHeight);\n this.printWind = printWindow(gObj.element, this.printWind);\n };\n Print.prototype.removeColGroup = function (gObj) {\n var depth = gObj.groupSettings.columns.length;\n var element = gObj.element;\n var id = '#' + gObj.element.id;\n if (!depth) {\n return;\n }\n var groupCaption = selectAll('.e-groupcaption', element);\n var colSpan = groupCaption[depth - 1].getAttribute('colspan');\n for (var i = 0; i < groupCaption.length; i++) {\n groupCaption[parseInt(i.toString(), 10)].setAttribute('colspan', colSpan);\n }\n var colGroups = selectAll(\"colgroup\" + id + \"colgroup\", element);\n var contentColGroups = selectAll('.e-content colgroup', element);\n this.hideColGroup(colGroups, depth);\n this.hideColGroup(contentColGroups, depth);\n };\n Print.prototype.hideColGroup = function (colGroups, depth) {\n for (var i = 0; i < colGroups.length; i++) {\n for (var j = 0; j < depth; j++) {\n colGroups[parseInt(i.toString(), 10)].children[parseInt(j.toString(), 10)].style.display = 'none';\n }\n }\n };\n /**\n * To destroy the print\n *\n * @returns {boolean} returns the isPrintGrid or not\n * @hidden\n */\n Print.prototype.isPrintGrid = function () {\n return this.parent.element.id.indexOf('_print') > 0 && this.parent.isPrinting;\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.contentReady, this.contentReady.bind(this));\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.off(events.onEmpty, this.onEmpty.bind(this));\n this.parent.off(events.hierarchyPrint, this.hierarchyPrint);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n Print.printGridProp = getCloneProperties().concat([events.beforePrint, events.printComplete, events.load]);\n return Print;\n}());\nexport { Print };\n","import { Browser } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest, classList } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport { setCssInGridPopUp, getActualPropFromColl, isActionPrevent, iterateExtend, parentsUntil } from '../base/util';\nimport { addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\nimport * as literals from '../base/string-literals';\n/**\n *\n * The `Sort` module is used to handle sorting action.\n */\nvar Sort = /** @class */ (function () {\n /**\n * Constructor for Grid sorting module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SortSettings} sortSettings - specifies the SortSettings\n * @param {string[]} sortedColumns - specifies the string\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Sort(parent, sortSettings, sortedColumns, locator) {\n this.contentRefresh = true;\n this.isModelChanged = true;\n this.aria = new AriaService();\n this.currentTarget = null;\n this.parent = parent;\n this.sortSettings = sortSettings;\n this.sortedColumns = sortedColumns;\n this.serviceLocator = locator;\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * The function used to update sortSettings\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.updateModel = function () {\n var sortedColumn = { field: this.columnName, direction: this.direction };\n var index;\n var gCols = this.parent.groupSettings.columns;\n var flag = false;\n if (!this.isMultiSort) {\n if (!gCols.length) {\n this.sortSettings.columns = [sortedColumn];\n }\n else {\n var sortedCols = [];\n for (var i = 0, len = gCols.length; i < len; i++) {\n index = this.getSortedColsIndexByField(gCols[parseInt(i.toString(), 10)], sortedCols);\n if (this.columnName === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n sortedCols.push(sortedColumn);\n }\n else {\n var sCol = this.getSortColumnFromField(gCols[parseInt(i.toString(), 10)]);\n sortedCols.push({ field: sCol.field, direction: sCol.direction, isFromGroup: sCol.isFromGroup });\n }\n }\n if (!flag) {\n sortedCols.push(sortedColumn);\n }\n this.sortSettings.columns = sortedCols;\n }\n }\n else {\n index = this.getSortedColsIndexByField(this.columnName);\n if (index > -1) {\n this.sortSettings.columns.splice(index, 1);\n }\n this.sortSettings.columns.push(sortedColumn);\n // eslint-disable-next-line no-self-assign\n this.sortSettings.columns = this.sortSettings.columns;\n }\n this.parent.dataBind();\n this.lastSortedCol = this.columnName;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Sort.prototype.onActionComplete = function (e) {\n var args = !this.isRemove ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting', type: events.actionComplete\n } : { requestType: 'sorting', type: events.actionComplete };\n this.isRemove = false;\n this.parent.trigger(events.actionComplete, extend(e, args));\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to sort.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previously sorted columns are to be maintained.\n * @returns {void}\n */\n Sort.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n var gObj = this.parent;\n if (this.parent.getColumnByField(columnName).allowSorting === false || this.parent.isContextMenuOpen()) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: columnName });\n return;\n }\n if (!gObj.allowMultiSorting) {\n isMultiSort = gObj.allowMultiSorting;\n }\n if (this.isActionPrevent()) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.sortColumn,\n arg1: columnName, arg2: direction, arg3: isMultiSort\n });\n return;\n }\n this.backupSettings();\n this.columnName = columnName;\n this.direction = direction;\n this.isMultiSort = isMultiSort;\n this.removeSortIcons();\n this.updateSortedCols(columnName, isMultiSort);\n this.updateModel();\n };\n Sort.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isSort);\n }\n };\n Sort.prototype.backupSettings = function () {\n this.lastSortedCols = iterateExtend(this.sortSettings.columns);\n this.lastCols = this.sortedColumns;\n };\n Sort.prototype.restoreSettings = function () {\n this.isModelChanged = false;\n this.isMultiSort = true;\n this.parent.setProperties({ sortSettings: { columns: this.lastSortedCols } }, true);\n //this.parent.sortSettings.columns = this.lastSortedCols;\n this.sortedColumns = this.lastCols;\n this.isModelChanged = true;\n };\n Sort.prototype.updateSortedCols = function (columnName, isMultiSort) {\n if (!isMultiSort) {\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.sortedColumns.length; i < len; i++) {\n if (this.parent.groupSettings.columns.indexOf(this.sortedColumns[parseInt(i.toString(), 10)]) < 0) {\n this.sortedColumns.splice(i, 1);\n len--;\n i--;\n }\n }\n }\n else {\n this.sortedColumns.splice(0, this.sortedColumns.length);\n }\n }\n if (this.sortedColumns.indexOf(columnName) < 0) {\n this.sortedColumns.push(columnName);\n }\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Sort.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (this.contentRefresh) {\n var args = this.sortSettings.columns.length ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting',\n type: events.actionBegin, target: this.currentTarget, cancel: false\n } : {\n requestType: 'sorting', type: events.actionBegin, cancel: false,\n target: this.currentTarget\n };\n this.parent.notify(events.modelChanged, args);\n }\n this.refreshSortSettings();\n this.removeSortIcons();\n this.addSortIcons();\n };\n Sort.prototype.refreshSortSettings = function () {\n this.sortedColumns.length = 0;\n var sortColumns = this.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (!sortColumns[parseInt(i.toString(), 10)].isFromGroup) {\n this.sortedColumns.push(sortColumns[parseInt(i.toString(), 10)].field);\n }\n }\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Sort.prototype.clearSorting = function () {\n var cols = getActualPropFromColl(this.sortSettings.columns);\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearSorting });\n return;\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.removeSortColumn(cols[parseInt(i.toString(), 10)].field);\n }\n };\n Sort.prototype.isActionPrevent = function () {\n return isActionPrevent(this.parent);\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Sort.prototype.removeSortColumn = function (field) {\n var gObj = this.parent;\n var cols = this.sortSettings.columns;\n if (cols.length === 0 && this.sortedColumns.indexOf(field) < 0) {\n return;\n }\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.removeSortColumn, arg1: field });\n return;\n }\n this.backupSettings();\n this.removeSortIcons();\n var args = { requestType: 'sorting', type: events.actionBegin, target: this.currentTarget };\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n if (gObj.allowGrouping && gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1) {\n continue;\n }\n this.sortedColumns.splice(this.sortedColumns.indexOf(cols[parseInt(i.toString(), 10)].field), 1);\n cols.splice(i, 1);\n this.isRemove = true;\n if (this.isModelChanged) {\n this.parent.notify(events.modelChanged, args);\n }\n break;\n }\n }\n if (!args.cancel) {\n this.addSortIcons();\n }\n };\n Sort.prototype.getSortedColsIndexByField = function (field, sortedColumns) {\n var cols = sortedColumns ? sortedColumns : this.sortSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Sort.prototype.getModuleName = function () {\n return 'sort';\n };\n Sort.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.sortSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.isMultiSort = this.sortSettings.columns.length > 1;\n for (var _i = 0, _a = gObj.sortSettings.columns.slice(); _i < _a.length; _i++) {\n var col = _a[_i];\n if (this.sortedColumns.indexOf(col.field) > -1) {\n this.sortColumn(col.field, col.direction, true);\n }\n }\n this.isMultiSort = false;\n this.contentRefresh = true;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Sort.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.setFullScreenDialog, handler: this.setFullScreenDialog },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.sortComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.click, handler: this.clickHandler },\n { event: events.headerRefreshed, handler: this.refreshSortIcons },\n { event: events.keyPressed, handler: this.keyPressed },\n { event: events.cancelBegin, handler: this.cancelBeginEvent },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Sort.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the sorting\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.destroy = function () {\n this.isModelChanged = false;\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-sortdirect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.refreshing && (this.parent.isDestroyed || !this.parent.allowSorting)) {\n this.clearSorting();\n }\n this.isModelChanged = true;\n this.removeEventListener();\n };\n Sort.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'sorting') {\n this.restoreSettings();\n this.refreshSortIcons();\n this.isMultiSort = true;\n }\n };\n Sort.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n this.currentTarget = null;\n this.popUpClickHandler(e);\n var target = closest(e.target, '.e-headercell');\n if (target && !e.target.classList.contains('e-grptogglebtn') &&\n !(target.classList.contains('e-resized')) &&\n !e.target.classList.contains('e-rhandler') &&\n !e.target.classList.contains('e-columnmenu') &&\n !e.target.classList.contains('e-filtermenudiv') &&\n !parentsUntil(e.target, 'e-stackedheadercell') &&\n !(gObj.allowSelection && gObj.selectionSettings.allowColumnSelection &&\n e.target.classList.contains('e-headercell'))) {\n var gObj_1 = this.parent;\n var colObj = gObj_1.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n if (colObj.type !== 'checkbox') {\n this.initiateSort(target, e, colObj);\n if (Browser.isDevice) {\n this.showPopUp(e);\n }\n }\n }\n if (target) {\n target.classList.remove('e-resized');\n }\n if (parentsUntil(e.target, 'e-excel-ascending') ||\n parentsUntil(e.target, 'e-excel-descending')) {\n var colUid = closest(e.target, '.e-filter-popup').getAttribute('uid');\n var direction = isNullOrUndefined(parentsUntil(e.target, 'e-excel-descending')) ?\n 'Ascending' : 'Descending';\n this.sortColumn(gObj.getColumnByUid(colUid).field, direction, false);\n }\n };\n Sort.prototype.keyPressed = function (e) {\n var ele = e.target;\n if (!this.parent.isEdit && (e.action === 'enter' || e.action === 'ctrlEnter' || e.action === 'shiftEnter')\n && closest(ele, '.e-headercell')) {\n var target = this.focus.getFocusedElement();\n if (isNullOrUndefined(target) || !target.classList.contains('e-headercell')\n || !target.querySelector('.e-headercelldiv')) {\n return;\n }\n var col = this.parent.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n this.initiateSort(target, e, col);\n }\n };\n Sort.prototype.initiateSort = function (target, e, column) {\n var gObj = this.parent;\n var field = column.field;\n this.currentTarget = e.target;\n var direction = !target.getElementsByClassName('e-ascending').length ? 'Ascending' :\n 'Descending';\n this.isMultiSort = e.ctrlKey || this.enableSortMultiTouch ||\n (navigator.userAgent.indexOf('Mac OS') !== -1 && e.metaKey);\n if (e.shiftKey || (this.sortSettings.allowUnsort && target.getElementsByClassName('e-descending').length)\n && !(gObj.groupSettings.columns.indexOf(field) > -1)) {\n this.removeSortColumn(field);\n }\n else {\n this.sortColumn(field, direction, this.isMultiSort);\n }\n };\n Sort.prototype.showPopUp = function (e) {\n var target = closest(e.target, '.e-headercell');\n if (this.parent.allowMultiSorting && (!isNullOrUndefined(target) || this.parent.isContextMenuOpen())) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-sortdirect e-icons e-icon-sortdirect' + (this.sortedColumns.length > 1 ? ' e-spanclicked' : ''));\n }\n };\n Sort.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-sortdirect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSortMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSortMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Sort.prototype.addSortIcons = function () {\n var gObj = this.parent;\n var header;\n var filterElement;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = 0, len = cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[parseInt(i.toString(), 10)].field);\n if (fieldNames.indexOf(cols[parseInt(i.toString(), 10)].field) === -1 || isNullOrUndefined(header)) {\n continue;\n }\n this.aria.setSort(header, (cols[parseInt(i.toString(), 10)].direction).toLowerCase());\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }), header.querySelector('.e-headertext'));\n }\n filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[parseInt(i.toString(), 10)].direction === 'Ascending') {\n classList(filterElement, ['e-ascending', 'e-icon-ascending'], []);\n }\n else {\n classList(filterElement, ['e-descending', 'e-icon-descending'], []);\n }\n }\n };\n Sort.prototype.removeSortIcons = function (position) {\n var gObj = this.parent;\n var header;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = position ? position : 0, len = !isNullOrUndefined(position) ? position + 1 : cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[parseInt(i.toString(), 10)].field);\n if (isNullOrUndefined(header) || (gObj.allowGrouping\n && gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1\n && !header.querySelector('.e-sortfilterdiv'))) {\n continue;\n }\n if (fieldNames.indexOf(cols[parseInt(i.toString(), 10)].field) === -1) {\n continue;\n }\n this.aria.setSort(header, 'none');\n classList(header.querySelector('.e-sortfilterdiv'), [], ['e-descending', 'e-icon-descending', 'e-ascending', 'e-icon-ascending']);\n if (header.querySelector('.e-sortnumber')) {\n header.querySelector('.e-headercelldiv').removeChild(header.querySelector('.e-sortnumber'));\n }\n }\n };\n Sort.prototype.getSortColumnFromField = function (field) {\n for (var i = 0, len = this.sortSettings.columns.length; i < len; i++) {\n if (this.sortSettings.columns[parseInt(i.toString(), 10)].field === field) {\n return this.sortSettings.columns[parseInt(i.toString(), 10)];\n }\n }\n return false;\n };\n Sort.prototype.updateAriaAttr = function () {\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var _i = 0, _a = this.sortedColumns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (fieldNames.indexOf(col) === -1) {\n continue;\n }\n var header = this.parent.getColumnHeaderByField(col);\n this.aria.setSort(header, this.getSortColumnFromField(col).direction);\n }\n };\n Sort.prototype.refreshSortIcons = function (params) {\n if (params === void 0) { params = { args: { isFrozen: false } }; }\n if (!params.args.isFrozen) {\n this.removeSortIcons();\n this.isMultiSort = true;\n this.removeSortIcons();\n this.addSortIcons();\n this.isMultiSort = false;\n this.updateAriaAttr();\n }\n };\n /**\n * To show the responsive custom sort dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n Sort.prototype.showCustomSort = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog();\n };\n return Sort;\n}());\nexport { Sort };\n","import { EventHandler, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { remove, select, removeClass } from '@syncfusion/ej2-base';\nimport { Toolbar as tool } from '@syncfusion/ej2-navigations';\nimport * as events from '../base/constant';\nimport { templateCompiler, appendChildren, parentsUntil, addRemoveEventListener } from '../base/util';\nimport { ResponsiveToolbarAction } from '../base/enum';\nimport { SearchBox } from '../services/focus-strategy';\n/**\n *\n * The `Toolbar` module is used to handle ToolBar actions.\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent, serviceLocator) {\n this.predefinedItems = {};\n this.isSearched = false;\n this.items = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print', 'Search',\n 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport', 'WordExport'];\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n var preItems = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print',\n 'PdfExport', 'ExcelExport', 'WordExport', 'CsvExport'];\n var isAdaptive = this.parent.enableAdaptiveUI;\n var excludingItems = ['Edit', 'Delete', 'Update', 'Cancel'];\n for (var _i = 0, preItems_1 = preItems; _i < preItems_1.length; _i++) {\n var item = preItems_1[_i];\n var itemStr = item.toLowerCase();\n var localeName = itemStr[0].toUpperCase() + itemStr.slice(1);\n this.predefinedItems[\"\" + item] = {\n id: this.gridID + '_' + itemStr, prefixIcon: 'e-' + itemStr,\n text: this.l10n.getConstant(localeName), tooltipText: this.l10n.getConstant(localeName)\n };\n if (isAdaptive) {\n this.predefinedItems[\"\" + item].text = '';\n this.predefinedItems[\"\" + item].visible = excludingItems.indexOf(item) === -1;\n }\n }\n this.predefinedItems.Search = {\n id: this.gridID + '_search',\n tooltipText: this.l10n.getConstant('Search'), align: 'Right', cssClass: 'e-search-wrapper',\n type: 'Input'\n };\n this.predefinedItems.ColumnChooser = {\n id: this.gridID + '_' + 'columnchooser', cssClass: 'e-cc e-ccdiv e-cc-toolbar', suffixIcon: 'e-' + 'columnchooser-btn',\n text: isAdaptive ? '' : this.l10n.getConstant('Columnchooser'),\n tooltipText: this.l10n.getConstant('Columnchooser'), align: 'Right'\n };\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n this.predefinedItems.responsiveFilter = {\n id: this.gridID + '_' + 'responsivefilter', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resfilter-icon', tooltipText: this.l10n.getConstant('FilterButton')\n };\n }\n if (this.parent.allowSorting) {\n this.predefinedItems.responsiveSort = {\n id: this.gridID + '_' + 'responsivesort', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'ressort-icon', tooltipText: this.l10n.getConstant('Sort')\n };\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar && this.parent.toolbar.indexOf('Search') > -1) {\n this.predefinedItems.responsiveBack = {\n id: this.gridID + '_' + 'responsiveback', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resback-icon', visible: false\n };\n }\n this.createToolbar();\n };\n /**\n * Gets the toolbar of the Grid.\n *\n * @returns {Element} returns the element\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.toolbar.element;\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n */\n Toolbar.prototype.destroy = function () {\n if (this.toolbar && !this.toolbar.isDestroyed) {\n if (!this.toolbar.element) {\n this.parent.destroyTemplate(['toolbarTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n this.toolbar.off('render-react-toolbar-template', this.addReactToolbarPortals);\n this.toolbar.destroy();\n }\n this.unWireEvent();\n this.removeEventListener();\n if (this.element.parentNode) {\n remove(this.element);\n }\n }\n };\n Toolbar.prototype.bindSearchEvents = function () {\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n this.wireEvent();\n this.refreshToolbarItems();\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n };\n Toolbar.prototype.toolbarCreated = function (isNormal) {\n if (this.element.querySelector('.e-search-wrapper')) {\n if (!this.parent.enableAdaptiveUI || isNormal) {\n var classList = this.parent.cssClass ? 'e-input-group e-search ' + this.parent.cssClass\n : 'e-input-group e-search';\n this.element.querySelector('.e-search-wrapper').innerHTML = '
    \\\n \\\n \\\n \\\n
    ';\n }\n else {\n this.element.querySelector('.e-search-wrapper').innerHTML = '\\\n \\\n ';\n }\n }\n this.bindSearchEvents();\n };\n Toolbar.prototype.createToolbar = function () {\n var items = this.getItems();\n this.toolbar = new tool({\n items: items,\n clicked: this.toolbarClickHandler.bind(this),\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n created: this.toolbarCreated.bind(this),\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.toolbar.isReact = this.parent.isReact;\n this.toolbar.on('render-react-toolbar-template', this.addReactToolbarPortals, this);\n var isStringTemplate = 'isStringTemplate';\n this.toolbar[\"\" + isStringTemplate] = true;\n var viewStr = 'viewContainerRef';\n var registerTemp = 'registeredTemplate';\n if (this.parent[\"\" + viewStr]) {\n this.toolbar[\"\" + registerTemp] = {};\n this.toolbar[\"\" + viewStr] = this.parent[\"\" + viewStr];\n }\n this.element = this.parent.createElement('div', { id: this.gridID + '_toolbarItems' });\n if (this.parent.enableAdaptiveUI) {\n this.element.classList.add('e-res-toolbar');\n }\n if (this.parent.toolbarTemplate) {\n if (typeof (this.parent.toolbarTemplate) === 'string') {\n this.toolbar.appendTo(this.parent.toolbarTemplate);\n this.element = this.toolbar.element;\n }\n else {\n var isReactCompiler = this.parent.isReact && typeof (this.parent.toolbarTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var ID = this.parent.element.id + 'toolbarTemplate';\n if (isReactCompiler || isReactChild) {\n templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate', ID, null, null, this.element);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(this.element, templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate'));\n }\n }\n this.element.classList.add('e-temp-toolbar');\n }\n else {\n this.toolbar.appendTo(this.element);\n }\n this.parent.element.insertBefore(this.element, this.parent.getHeaderContent());\n var tlbrLeftElement = this.element.querySelector('.e-toolbar-left');\n var tlbrCenterElement = this.element.querySelector('.e-toolbar-center');\n var tlbrRightElement = this.element.querySelector('.e-toolbar-right');\n var tlbrItems = this.element.querySelector('.e-toolbar-items');\n var tlbrElement = this.element;\n var tlbrLeftWidth = tlbrLeftElement ? tlbrLeftElement.clientWidth : 0;\n var tlbrCenterWidth = tlbrCenterElement ? tlbrCenterElement.clientWidth : 0;\n var tlbrRightWidth = tlbrRightElement ? tlbrRightElement.clientWidth : 0;\n var tlbrItemsWidth = tlbrItems ? tlbrItems.clientWidth : 0;\n var tlbrWidth = tlbrElement ? tlbrElement.clientWidth : 0;\n if (tlbrLeftWidth > tlbrWidth || tlbrCenterWidth > tlbrWidth || tlbrRightWidth > tlbrWidth || tlbrItemsWidth > tlbrWidth) {\n this.toolbar.refreshOverflow();\n }\n };\n Toolbar.prototype.addReactToolbarPortals = function (args) {\n if (this.parent.isReact && args) {\n this.parent.portals = this.parent.portals.concat(args);\n this.parent.renderTemplates();\n }\n };\n Toolbar.prototype.renderResponsiveSearch = function (isRender) {\n if (isRender) {\n this.toolbarCreated(true);\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isSearch);\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n var right = parentsUntil(this.searchElement, 'e-toolbar-right');\n right.classList.add('e-responsive-right');\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n this.searchBoxObj.searchFocus({ target: this.searchElement });\n this.searchElement.focus();\n }\n else {\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isInitial);\n }\n };\n Toolbar.prototype.refreshResponsiveToolbarItems = function (action) {\n if (action === ResponsiveToolbarAction.isInitial) {\n var id = this.parent.element.id;\n var items = [id + '_edit', id + '_delete'];\n var selectedRecords = this.parent.getSelectedRowIndexes();\n var excludingItems = [id + '_responsiveback', id + '_update', id + '_cancel'];\n for (var _i = 0, _a = this.toolbar.items; _i < _a.length; _i++) {\n var item = _a[_i];\n var toolbarEle = item.template.length ? this.toolbar.element.querySelector(item.template) : this.toolbar.element.querySelector('#' + item.id);\n if (toolbarEle) {\n if (items.indexOf(item.id) > -1) {\n if (selectedRecords.length) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n else {\n if (excludingItems.indexOf(item.id) === -1) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n }\n }\n if (this.searchElement) {\n var right = parentsUntil(this.searchElement, 'e-toolbar-right');\n right.classList.remove('e-responsive-right');\n this.toolbarCreated(false);\n this.unWireEvent();\n this.searchElement = undefined;\n }\n }\n if (action === ResponsiveToolbarAction.isSearch) {\n var items = [this.parent.element.id + '_responsiveback', this.parent.element.id + '_search'];\n for (var _b = 0, _c = this.toolbar.items; _b < _c.length; _b++) {\n var item = _c[_b];\n var toolbarEle = this.toolbar.element.querySelector('#' + item.id);\n if (toolbarEle) {\n if (items.indexOf(item.id) > -1) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.refreshToolbarItems = function (args) {\n var gObj = this.parent;\n var enableItems = [];\n var disableItems = [];\n var edit = gObj.editSettings;\n var hasData = gObj.currentViewData && gObj.currentViewData.length;\n if (edit.allowAdding) {\n enableItems.push(this.gridID + '_add');\n }\n else {\n disableItems.push(this.gridID + '_add');\n }\n if (edit.allowEditing && hasData) {\n enableItems.push(this.gridID + '_edit');\n }\n else {\n disableItems.push(this.gridID + '_edit');\n }\n if (edit.allowDeleting && hasData) {\n enableItems.push(this.gridID + '_delete');\n }\n else {\n disableItems.push(this.gridID + '_delete');\n }\n if (gObj.editSettings.mode === 'Batch') {\n if (gObj.element.getElementsByClassName('e-updatedtd').length && (edit.allowAdding || edit.allowEditing)) {\n enableItems.push(this.gridID + '_update');\n enableItems.push(this.gridID + '_cancel');\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n else {\n if (gObj.isEdit && (edit.allowAdding || edit.allowEditing)) {\n enableItems = [this.gridID + '_update', this.gridID + '_cancel'];\n disableItems = [this.gridID + '_add', this.gridID + '_edit', this.gridID + '_delete'];\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n this.enableItems(enableItems, true);\n this.enableItems(disableItems, false);\n };\n Toolbar.prototype.getItems = function () {\n var items = [];\n var toolbarItems = this.parent.toolbar || [];\n if (typeof (this.parent.toolbar) === 'string') {\n return [];\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n items.push(this.getItemObject('responsiveFilter'));\n }\n if (this.parent.allowSorting) {\n items.push(this.getItemObject('responsiveSort'));\n }\n }\n for (var _i = 0, toolbarItems_1 = toolbarItems; _i < toolbarItems_1.length; _i++) {\n var item = toolbarItems_1[_i];\n switch (typeof item) {\n case 'number':\n items.push(this.getItemObject(this.items[item]));\n break;\n case 'string':\n items.push(this.getItemObject(item));\n break;\n default:\n items.push(this.getItem(item));\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar && this.parent.toolbar.indexOf('Search') > -1) {\n items.push(this.getItemObject('responsiveBack'));\n }\n return items;\n };\n Toolbar.prototype.getItem = function (itemObject) {\n var item = this.predefinedItems[itemObject.text];\n return item ? extend(item, item, itemObject) : itemObject;\n };\n Toolbar.prototype.getItemObject = function (itemName) {\n return this.predefinedItems[\"\" + itemName] || { text: itemName, id: this.gridID + '_' + itemName };\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n * @hidden\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n var element = select('#' + item, this.element);\n if (element) {\n this.toolbar.enableItems(element.parentElement, isEnable);\n }\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (args) {\n var _this = this;\n var gObj = this.parent;\n var gID = this.gridID;\n extend(args, { cancel: false });\n var newArgs = args;\n var originalEvent = args.originalEvent;\n gObj.trigger(events.toolbarClick, newArgs, function (toolbarargs) {\n toolbarargs.originalEvent = toolbarargs.originalEvent ? toolbarargs.originalEvent : originalEvent;\n if (!toolbarargs.cancel) {\n switch (!isNullOrUndefined(toolbarargs.item) && toolbarargs.item.id) {\n case gID + '_print':\n gObj.print();\n break;\n case gID + '_edit':\n gObj.startEdit();\n break;\n case gID + '_update':\n gObj.endEdit();\n break;\n case gID + '_cancel':\n gObj.closeEdit();\n break;\n case gID + '_add':\n gObj.addRecord();\n break;\n case gID + '_delete':\n gObj.deleteRecord();\n break;\n case gID + '_search':\n if (toolbarargs.originalEvent.target.id === gID + '_searchbutton' && _this.searchElement) {\n _this.search();\n }\n else if (gObj.enableAdaptiveUI && !_this.searchElement\n && (toolbarargs.originalEvent.target.classList.contains('e-search-wrapper')\n || toolbarargs.originalEvent.target.id === gID + '_searchbutton')) {\n _this.renderResponsiveSearch(true);\n }\n else if (toolbarargs.originalEvent.target.classList.contains('e-clear-icon') && toolbarargs.originalEvent.target.id === gID + '_clearbutton' && _this.searchElement) {\n _this.searchElement.value = '';\n if (_this.searchElement) {\n _this.sIcon = _this.searchElement.parentElement.querySelector('.e-sicon');\n _this.sIcon.classList.remove('e-clear-icon');\n _this.sIcon.removeAttribute('title');\n _this.sIcon.style.cursor = 'default';\n }\n if (_this.isSearched || _this.parent.searchSettings.key.length) {\n _this.parent.search(_this.searchElement.value);\n _this.isSearched = false;\n }\n }\n break;\n case gID + '_columnchooser':\n /* eslint-disable */\n var tarElement = _this.parent.element.querySelector('.e-ccdiv');\n var y = tarElement.getBoundingClientRect().top;\n var x = tarElement.getBoundingClientRect().left;\n var targetEle = toolbarargs.originalEvent.target;\n /* eslint-enable */\n y = tarElement.getBoundingClientRect().top + tarElement.offsetTop;\n gObj.createColumnchooser(x, y, targetEle);\n break;\n case gID + '_responsivefilter':\n gObj.showResponsiveCustomFilter();\n break;\n case gID + '_responsivesort':\n gObj.showResponsiveCustomSort();\n break;\n case gID + '_responsiveback':\n _this.renderResponsiveSearch(false);\n break;\n }\n }\n });\n };\n Toolbar.prototype.modelChanged = function (e) {\n if (e.module === 'edit') {\n this.refreshToolbarItems();\n }\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() || !this.parent.toolbar) {\n return;\n }\n if (this.element) {\n remove(this.element);\n }\n this.render();\n };\n Toolbar.prototype.keyUpHandler = function (e) {\n if (e.keyCode === 13) {\n this.search();\n }\n if (this.searchElement) {\n this.sIcon = this.searchElement.parentElement.querySelector('.e-sicon');\n if (this.searchElement.value.length && !isNullOrUndefined(this.sIcon)) {\n this.sIcon.classList.add('e-clear-icon');\n this.sIcon.setAttribute('title', 'Clear');\n this.sIcon.style.cursor = 'pointer';\n }\n else {\n this.sIcon.classList.remove('e-clear-icon');\n this.sIcon.removeAttribute('title');\n this.sIcon.style.cursor = 'default';\n }\n }\n };\n Toolbar.prototype.search = function () {\n this.isSearched = true;\n this.parent.search(this.searchElement.value);\n };\n Toolbar.prototype.updateSearchBox = function () {\n if (this.searchElement) {\n this.searchElement.value = this.parent.searchSettings.key;\n }\n };\n Toolbar.prototype.wireEvent = function () {\n if (this.searchElement) {\n this.searchBoxObj = new SearchBox(this.searchElement);\n EventHandler.add(this.searchElement, 'keyup', this.keyUpHandler, this);\n this.searchBoxObj.wireEvent();\n }\n EventHandler.add(this.element, 'focusin', this.onFocusIn, this);\n EventHandler.add(this.element, 'focusout', this.onFocusOut, this);\n };\n Toolbar.prototype.unWireEvent = function () {\n if (this.searchElement) {\n EventHandler.remove(this.searchElement, 'keyup', this.keyUpHandler);\n this.searchBoxObj.unWireEvent();\n }\n EventHandler.remove(this.element, 'focusin', this.onFocusIn);\n EventHandler.remove(this.element, 'focusout', this.onFocusOut);\n };\n Toolbar.prototype.onFocusIn = function (e) {\n var currentInfo = this.parent.focusModule.currentInfo;\n if (currentInfo && currentInfo.element) {\n removeClass([currentInfo.element, currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n currentInfo.element.tabIndex = -1;\n }\n e.target.tabIndex = 0;\n };\n Toolbar.prototype.onFocusOut = function (e) {\n e.target.tabIndex = -1;\n };\n Toolbar.prototype.setFocusToolbarItem = function (element) {\n var elementToFocus = element.querySelector('.e-btn,.e-input,.e-toolbar-item-focus');\n if (!elementToFocus && this.parent.enableAdaptiveUI && !this.searchElement\n && element.classList.contains('e-search-wrapper')) {\n elementToFocus = element.querySelector('#' + this.gridID + '_searchbutton');\n }\n elementToFocus.focus();\n };\n Toolbar.prototype.getFocusableToolbarItems = function () {\n var getFocusToolbarElements = [].slice.call(this.element.querySelectorAll('.e-toolbar-item:not(.e-overlay):not(.e-hidden)'));\n var getFocusToolbarItems = [];\n for (var i = 0; i < getFocusToolbarElements.length; i++) {\n if (!isNullOrUndefined(getFocusToolbarElements[parseInt(i.toString(), 10)].querySelector('.e-btn,.e-input,.e-toolbar-item-focus'))) {\n getFocusToolbarItems.push(getFocusToolbarElements[parseInt(i.toString(), 10)]);\n }\n }\n return getFocusToolbarItems;\n };\n Toolbar.prototype.keyPressedHandler = function (e) {\n if (e.target && parentsUntil(e.target, 'e-toolbar-item')) {\n var targetParent = parentsUntil(e.target, 'e-toolbar-item');\n var focusableToolbarItems = this.getFocusableToolbarItems();\n if (e.action === 'tab' || e.action === 'shiftTab') {\n if ((e.action === 'tab' && targetParent === focusableToolbarItems[focusableToolbarItems.length - 1])\n || (e.action === 'shiftTab' && targetParent === focusableToolbarItems[0])) {\n return;\n }\n for (var i = 0; i < focusableToolbarItems.length; i++) {\n if (targetParent === focusableToolbarItems[parseInt(i.toString(), 10)]) {\n e.preventDefault();\n var index = e.action === 'tab' ? i + 1 : i - 1;\n this.setFocusToolbarItem(focusableToolbarItems[parseInt(index.toString(), 10)]);\n return;\n }\n }\n }\n if (e.action === 'enter') {\n if (this.parent.enableAdaptiveUI && !this.searchElement\n && e.target.id === this.gridID + '_searchbutton') {\n this.renderResponsiveSearch(true);\n }\n }\n }\n };\n Toolbar.prototype.reRenderToolbar = function () {\n if (this.element) {\n remove(this.element);\n }\n this.render();\n };\n Toolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.setFullScreenDialog, handler: this.reRenderToolbar },\n { event: events.initialEnd, handler: this.render },\n { event: events.uiUpdate, handler: this.onPropertyChanged },\n { event: events.inBoundModelChanged, handler: this.updateSearchBox.bind(this) },\n { event: events.modelChanged, handler: this.refreshToolbarItems },\n { event: events.toolbarRefresh, handler: this.refreshToolbarItems },\n { event: events.inBoundModelChanged, handler: this.modelChanged },\n { event: events.dataBound, handler: this.refreshToolbarItems },\n { event: events.click, handler: this.removeResponsiveSearch },\n { event: events.rowModeChange, handler: this.reRenderToolbar },\n { event: events.destroy, handler: this.destroy },\n { event: events.keyPressed, handler: this.keyPressedHandler }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.rowSelectedFunction = this.rowSelected.bind(this);\n this.rowDeSelectedFunction = this.rowSelected.bind(this);\n this.parent.addEventListener(events.rowSelected, this.rowSelectedFunction);\n this.parent.addEventListener(events.rowDeselected, this.rowDeSelectedFunction);\n };\n Toolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.rowSelected, this.rowSelectedFunction);\n this.parent.removeEventListener(events.rowDeselected, this.rowDeSelectedFunction);\n };\n Toolbar.prototype.removeResponsiveSearch = function (e) {\n var target = e.target;\n var isSearch = target.classList.contains('e-search-icon') || target.classList.contains('e-search-wrapper');\n if (this.parent.enableAdaptiveUI && !isSearch && this.searchElement\n && !parentsUntil(e.target, 'e-res-toolbar')) {\n this.renderResponsiveSearch(false);\n }\n };\n Toolbar.prototype.rowSelected = function () {\n if (this.parent.enableAdaptiveUI) {\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isInitial);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","/** @hidden */\nexport var created = 'create';\n/** @hidden */\nexport var destroyed = 'destroy';\n/** @hidden */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var headerCellInfo = 'headerCellInfo';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var cellSelecting = 'cellSelecting';\n/** @hidden */\nexport var cellSelected = 'cellSelected';\n/** @hidden */\nexport var cellDeselecting = 'cellDeselecting';\n/** @hidden */\nexport var cellDeselected = 'cellDeselected';\n/** @hidden */\nexport var columnSelecting = 'columnSelecting';\n/** @hidden */\nexport var columnSelected = 'columnSelected';\n/** @hidden */\nexport var columnDeselecting = 'columnDeselecting';\n/** @hidden */\nexport var columnDeselected = 'columnDeselected';\n/** @hidden */\nexport var columnDragStart = 'columnDragStart';\n/** @hidden */\nexport var columnDrag = 'columnDrag';\n/** @hidden */\nexport var columnDrop = 'columnDrop';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var beforePrint = 'beforePrint';\n/** @hidden */\nexport var printComplete = 'printComplete';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var endAdd = 'endAdd';\n/** @hidden */\nexport var endDelete = 'endDelete';\n/** @hidden */\nexport var endEdit = 'endEdit';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var recordClick = 'recordClick';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var beforeOpenColumnChooser = 'beforeOpenColumnChooser';\n/** @hidden */\nexport var beforeOpenAdaptiveDialog = 'beforeOpenAdaptiveDialog';\n/** @hidden */\nexport var resizeStart = 'resizeStart';\n/** @hidden */\nexport var onResize = 'resizing';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var checkBoxChange = 'checkBoxChange';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var beforeAutoFill = 'beforeAutoFill';\n/** @hidden */\nexport var filterChoiceRequest = 'filterchoicerequest';\n/** @hidden */\nexport var filterAfterOpen = 'filterafteropen';\n/** @hidden */\nexport var filterBeforeOpen = 'filterbeforeopen';\n/** @hidden */\nexport var filterSearchBegin = 'filtersearchbegin';\n/** @hidden */\nexport var commandClick = 'commandClick';\n/** @hidden */\nexport var exportGroupCaption = 'exportGroupCaption';\n/** @hidden */\nexport var lazyLoadGroupExpand = 'lazyLoadGroupExpand';\n/** @hidden */\nexport var lazyLoadGroupCollapse = 'lazyLoadGroupCollapse';\n/**\n * Specifies grid internal events\n */\n/** @hidden */\nexport var initialLoad = 'initial-load';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var dataReady = 'data-ready';\n/** @hidden */\nexport var contentReady = 'content-ready';\n/** @hidden */\nexport var uiUpdate = 'ui-update';\n/** @hidden */\nexport var onEmpty = 'on-empty';\n/** @hidden */\nexport var inBoundModelChanged = 'inbound-model-changed';\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var colGroupRefresh = 'colgroup-refresh';\n/** @hidden */\nexport var headerRefreshed = 'header-refreshed';\n/** @hidden */\nexport var pageBegin = 'paging-begin';\n/** @hidden */\nexport var pageComplete = 'paging-complete';\n/** @hidden */\nexport var sortBegin = 'sorting-begin';\n/** @hidden */\nexport var sortComplete = 'sorting-complete';\n/** @hidden */\nexport var filterBegin = 'filtering-begin';\n/** @hidden */\nexport var filterComplete = 'filtering-complete';\n/** @hidden */\nexport var searchBegin = 'searching-begin';\n/** @hidden */\nexport var searchComplete = 'searching-complete';\n/** @hidden */\nexport var reorderBegin = 'reorder-begin';\n/** @hidden */\nexport var reorderComplete = 'reorder-complete';\n/** @hidden */\nexport var rowDragAndDropBegin = 'rowdraganddrop-begin';\n/** @hidden */\nexport var rowDragAndDropComplete = 'rowdraganddrop-complete';\n/** @hidden */\nexport var groupBegin = 'grouping-begin';\n/** @hidden */\nexport var groupComplete = 'grouping-complete';\n/** @hidden */\nexport var ungroupBegin = 'ungrouping-begin';\n/** @hidden */\nexport var ungroupComplete = 'ungrouping-complete';\n/** @hidden */\nexport var groupAggregates = 'group-aggregates';\n/** @hidden */\nexport var refreshFooterRenderer = 'refresh-footer-rendered';\n/** @hidden */\nexport var refreshAggregateCell = 'refresh-aggregate-cell';\n/** @hidden */\nexport var refreshAggregates = 'refresh-aggregates';\n/** @hidden */\nexport var rowSelectionBegin = 'rowselecting';\n/** @hidden */\nexport var rowSelectionComplete = 'rowselected';\n/** @hidden */\nexport var columnSelectionBegin = 'columnselecting';\n/** @hidden */\nexport var columnSelectionComplete = 'columnselected';\n/** @hidden */\nexport var cellSelectionBegin = 'cellselecting';\n/** @hidden */\nexport var cellSelectionComplete = 'cellselected';\n/** @hidden */\nexport var beforeCellFocused = 'beforecellfocused';\n/** @hidden */\nexport var cellFocused = 'cellfocused';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var click = 'click';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var columnVisibilityChanged = 'column-visible-changed';\n/** @hidden */\nexport var scroll = 'scroll';\n/** @hidden */\nexport var columnWidthChanged = 'column-width-changed';\n/** @hidden */\nexport var columnPositionChanged = 'column-position-changed';\n/** @hidden */\nexport var rowDragAndDrop = 'row-drag-and-drop';\n/** @hidden */\nexport var rowsAdded = 'rows-added';\n/** @hidden */\nexport var rowsRemoved = 'rows-removed';\n/** @hidden */\nexport var columnDragStop = 'column-drag-stop';\n/** @hidden */\nexport var headerDrop = 'header-drop';\n/** @hidden */\nexport var dataSourceModified = 'datasource-modified';\n/** @hidden */\nexport var refreshComplete = 'refresh-complete';\n/** @hidden */\nexport var refreshVirtualBlock = 'refresh-virtual-block';\n/** @hidden */\nexport var dblclick = 'dblclick';\n/** @hidden */\nexport var toolbarRefresh = 'toolbar-refresh';\n/** @hidden */\nexport var bulkSave = 'bulk-save';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var tooltipDestroy = 'tooltip-destroy';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var editBegin = 'edit-begin';\n/** @hidden */\nexport var editComplete = 'edit-complete';\n/** @hidden */\nexport var addBegin = 'add-begin';\n/** @hidden */\nexport var addComplete = 'add-complete';\n/** @hidden */\nexport var saveComplete = 'save-complete';\n/** @hidden */\nexport var deleteBegin = 'delete-begin';\n/** @hidden */\nexport var deleteComplete = 'delete-complete';\n/** @hidden */\nexport var preventBatch = 'prevent-batch';\n/** @hidden */\nexport var dialogDestroy = 'dialog-destroy';\n/** @hidden */\nexport var crudAction = 'crud-Action';\n/** @hidden */\nexport var addDeleteAction = 'add-delete-Action';\n/** @hidden */\nexport var destroyForm = 'destroy-form';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var excelExportComplete = 'excelExportComplete';\n/** @hidden */\nexport var excelQueryCellInfo = 'excelQueryCellInfo';\n/** @hidden */\nexport var excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo';\n/** @hidden */\nexport var exportDetailDataBound = 'exportDetailDataBound';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var pdfExportComplete = 'pdfExportComplete';\n/** @hidden */\nexport var pdfQueryCellInfo = 'pdfQueryCellInfo';\n/** @hidden */\nexport var pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo';\n/** @hidden */\nexport var accessPredicate = 'access-predicate';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var freezeRender = 'freezerender';\n/** @hidden */\nexport var freezeRefresh = 'freezerefresh';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var columnMenuClick = 'columnMenuClick';\n/** @hidden */\nexport var columnMenuOpen = 'columnMenuOpen';\n/** @hidden */\nexport var filterOpen = 'filterOpen';\n/** @hidden */\nexport var filterDialogCreated = 'filterDialogCreated';\n/** @hidden */\nexport var filterMenuClose = 'filter-menu-close';\n/** @hidden */\nexport var initForeignKeyColumn = 'initForeignKeyColumn';\n/** @hidden */\nexport var getForeignKeyData = 'getForeignKeyData';\n/** @hidden */\nexport var generateQuery = 'generateQuery';\n/** @hidden */\nexport var showEmptyGrid = 'showEmptyGrid';\n/** @hidden */\nexport var foreignKeyData = 'foreignKeyData';\n/** @hidden */\nexport var columnDataStateChange = 'columnDataStateChange';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var dataSourceChanged = 'dataSourceChanged';\n/** @hidden */\nexport var rtlUpdated = 'rtl-updated';\n/** @hidden */\nexport var beforeFragAppend = 'beforeFragAppend';\n/** @hidden */\nexport var frozenHeight = 'frozenHeight';\n/** @hidden */\nexport var textWrapRefresh = 'textWrapRefresh';\n/** @hidden */\nexport var recordAdded = 'recordAdded';\n/** @hidden */\nexport var cancelBegin = 'cancel-Begin';\n/** @hidden */\nexport var editNextValCell = 'editNextValCell';\n/** @hidden */\nexport var hierarchyPrint = 'hierarchyprint';\n/** @hidden */\nexport var expandChildGrid = 'expandchildgrid';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var exportRowDataBound = 'export-RowDataBound';\n/** @hidden */\nexport var exportDataBound = 'export-DataBound';\n/** @hidden */\nexport var rowPositionChanged = 'row-position-changed';\n/** @hidden */\nexport var columnChooserOpened = 'columnChooserOpened';\n/** @hidden */\nexport var batchForm = 'batchedit-form';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var partialRefresh = 'partial-refresh';\n/** @hidden */\nexport var beforeCustomFilterOpen = 'beforeCustomFilterOpen';\n/** @hidden */\nexport var selectVirtualRow = 'select-virtual-Row';\n/** @hidden */\nexport var columnsPrepared = 'columns-prepared';\n/** @hidden */\nexport var cBoxFltrBegin = 'cbox-filter-begin';\n/** @hidden */\nexport var cBoxFltrComplete = 'cbox-filter-complete';\n/** @hidden */\nexport var fltrPrevent = 'filter-Prevent';\n/** @hidden */\nexport var beforeFltrcMenuOpen = 'before-filter-cmenu-open';\n/** @hidden */\nexport var valCustomPlacement = 'validation-custom-placement';\n/** @hidden */\nexport var filterCboxValue = 'filter-cbox-value';\n/** @hidden */\nexport var componentRendered = 'component-rendered';\n/** @hidden */\nexport var restoreFocus = 'restore-Focus';\n/** @hidden */\nexport var detailStateChange = 'detail-state-change';\n/** @hidden */\nexport var detailIndentCellInfo = 'detail-indentcell-info';\n/** @hidden */\nexport var virtaulKeyHandler = 'virtaul-key-handler';\n/** @hidden */\nexport var virtaulCellFocus = 'virtaul-cell-focus';\n/** @hidden */\nexport var virtualScrollEditActionBegin = 'virtual-scroll-edit-action-begin';\n/** @hidden */\nexport var virtualScrollEditSuccess = 'virtual-scroll-edit-success';\n/** @hidden */\nexport var virtualScrollEditCancel = 'virtual-scroll-edit-cancel';\n/** @hidden */\nexport var virtualScrollEdit = 'virtual-scroll-edit';\n/** @hidden */\nexport var refreshVirtualCache = 'refresh-virtual-cache';\n/** @hidden */\nexport var editReset = 'edit-reset';\n/** @hidden */\nexport var virtualScrollAddActionBegin = 'virtual-scroll-add-action-begin';\n/** @hidden */\nexport var getVirtualData = 'get-virtual-data';\n/** @hidden */\nexport var refreshInfiniteModeBlocks = 'refresh-infinite-mode-blocks';\n/** @hidden */\nexport var resetInfiniteBlocks = 'reset-infinite-blocks';\n/** @hidden */\nexport var infiniteScrollHandler = 'infinite-scroll-handler';\n/** @hidden */\nexport var infinitePageQuery = 'infinite-page-query';\n/** @hidden */\nexport var infiniteShowHide = 'infinite-show-hide';\n/** @hidden */\nexport var appendInfiniteContent = 'append-infinite-content';\n/** @hidden */\nexport var removeInfiniteRows = 'remove-infinite-rows';\n/** @hidden */\nexport var setInfiniteCache = 'set-infinite-cache';\n/** @hidden */\nexport var infiniteEditHandler = 'infinite-edit-handler';\n/** @hidden */\nexport var initialCollapse = 'initial-collapse';\n/** @hidden */\nexport var getAggregateQuery = 'get-aggregate-query';\n/** @hidden */\nexport var closeFilterDialog = 'close-filter-dialog';\n/** @hidden */\nexport var columnChooserCancelBtnClick = 'columnChooserCancelBtnClick';\n/** @hidden */\nexport var getFilterBarOperator = 'get-filterbar-operator';\n/** @hidden */\nexport var resetColumns = 'reset-columns';\n/** @hidden */\nexport var pdfAggregateQueryCellInfo = 'pdfAggregateQueryCellInfo';\n/** @hidden */\nexport var excelAggregateQueryCellInfo = 'excelAggregateQueryCellInfo';\n/** @hidden */\nexport var setGroupCache = 'group-cache';\n/** @hidden */\nexport var lazyLoadScrollHandler = 'lazy-load-scroll-handler';\n/** @hidden */\nexport var groupCollapse = 'group-collapse';\n/** @hidden */\nexport var beforeCheckboxRenderer = 'beforeCheckboxRenderer';\n/** @hidden */\nexport var refreshHandlers = 'refreshResizeHandlers';\n/** @hidden */\nexport var refreshFrozenColumns = 'refresh-frozen-columns';\n/** @hidden */\nexport var setReorderDestinationElement = 'set-reorder-destination-element';\n/** @hidden */\nexport var refreshVirtualFrozenHeight = 'refresh-virtual-frozen-height';\n/** @hidden */\nexport var setFreezeSelection = 'set-freeze-selection';\n/** @hidden */\nexport var setInfiniteFrozenHeight = 'set-infinite-frozen-height';\n/** @hidden */\nexport var setInfiniteColFrozenHeight = 'set-infinite-col-frozen-height';\n/** @hidden */\nexport var beforeRefreshOnDataChange = 'before-refresh-on-data-change';\n/** @hidden */\nexport var immutableBatchCancel = 'immutable-batch-cancel';\n/** @hidden */\nexport var refreshVirtualFrozenRows = 'refresh-virtual-frozenrows';\n/** @hidden */\nexport var checkScrollReset = 'check-scroll-reset';\n/** @hidden */\nexport var refreshFrozenHeight = 'refresh-frozen-height';\n/** @hidden */\nexport var setHeightToFrozenElement = 'set-height-to-frozen-element';\n/** @hidden */\nexport var preventFrozenScrollRefresh = 'prevent-frozen-scroll-refresh';\n/** @hidden */\nexport var nextCellIndex = 'next-cell-index';\n/** @hidden */\nexport var refreshInfiniteCurrentViewData = 'refresh-infinite-current-view-data';\n/** @hidden */\nexport var infiniteCrudCancel = 'infinite-crud-cancel';\n/** @hidden */\nexport var filterDialogClose = 'filter-dialog-close';\n/** @hidden */\nexport var refreshCustomFilterOkBtn = 'refresh-cutsom-filter-ok-button';\n/** @hidden */\nexport var refreshCustomFilterClearBtn = 'refresh-cutsom-filter-clear-button';\n/** @hidden */\nexport var renderResponsiveCmenu = 'render-responsive-cmenu';\n/** @hidden */\nexport var filterCmenuSelect = 'filter-cmenu-select';\n/** @hidden */\nexport var customFilterClose = 'custom-filter-close';\n/** @hidden */\nexport var setFullScreenDialog = 'set-fullscreen-dialog';\n/** @hidden */\nexport var refreshExpandandCollapse = 'refresh-Expand-and-Collapse';\n/** @hidden */\nexport var rowModeChange = 'row-mode-change';\n/** @hidden */\nexport var enterKeyHandler = 'enter-key-handler';\n/** @hidden */\nexport var refreshVirtualMaxPage = 'refresh-virtual-max-page';\n/** @hidden */\nexport var setVirtualPageQuery = 'set-virtual-page-query';\n/** @hidden */\nexport var selectRowOnContextOpen = 'select-row-on-context-open';\n/** @hidden */\nexport var pagerRefresh = 'pager-refresh';\n/** @hidden */\nexport var closeInline = 'closeinline';\n/** @hidden */\nexport var closeBatch = 'closebatch';\n/** @hidden */\nexport var closeEdit = 'close-edit';\n/** @hidden */\nexport var resetVirtualFocus = 'reset-virtual-focus';\n/** @hidden */\nexport var afterContentRender = 'after-content-renderer';\n/** @hidden */\nexport var refreshVirtualEditFormCells = 'refresh-virtual-editform-cells';\n/** @hidden */\nexport var scrollToEdit = 'scroll-to-edit';\n/** @hidden */\nexport var beforeCheckboxRendererQuery = 'before-checkbox-renderer-query';\n/** @hidden */\nexport var createVirtualValidationForm = 'create-virtual-validation-form';\n/** @hidden */\nexport var validateVirtualForm = 'validate-virtual-form';\n/** @hidden */\nexport var destroyChildGrid = 'destroy-child-grid';\n/** @hidden */\nexport var stickyScrollComplete = 'sticky-scroll-complete';\n/** @hidden */\nexport var captionActionComplete = 'infinite-group-collapse';\n/** @hidden */\nexport var refreshInfinitePersistSelection = 'refresh-infinite-persist-selection';\n/** @hidden */\nexport var refreshInfiniteEditrowindex = 'refresh-infinite-editrowindex';\n/** @hidden */\nexport var afterFilterColumnMenuClose = 'after-filter-column-menu-close';\n/** @hidden */\nexport var beforeCheckboxfilterRenderer = 'beforeCheckboxfilterRenderer';\n/** @hidden */\nexport var commandColumnDestroy = 'commandColumnDestroy';\n/** @hidden */\nexport var batchCnfrmDlgCancel = 'cancelcnfrmDlg';\n/** @hidden */\nexport var refreshVirtualLazyLoadCache = 'refresh-Virtual-LazyLoad-Cache';\n","/**\n * Defines types of Cell\n *\n * @hidden\n */\nexport var CellType;\n(function (CellType) {\n /** Defines CellType as Data */\n CellType[CellType[\"Data\"] = 0] = \"Data\";\n /** Defines CellType as Header */\n CellType[CellType[\"Header\"] = 1] = \"Header\";\n /** Defines CellType as Summary */\n CellType[CellType[\"Summary\"] = 2] = \"Summary\";\n /** Defines CellType as GroupSummary */\n CellType[CellType[\"GroupSummary\"] = 3] = \"GroupSummary\";\n /** Defines CellType as CaptionSummary */\n CellType[CellType[\"CaptionSummary\"] = 4] = \"CaptionSummary\";\n /** Defines CellType as Filter */\n CellType[CellType[\"Filter\"] = 5] = \"Filter\";\n /** Defines CellType as Indent */\n CellType[CellType[\"Indent\"] = 6] = \"Indent\";\n /** Defines CellType as GroupCaption */\n CellType[CellType[\"GroupCaption\"] = 7] = \"GroupCaption\";\n /** Defines CellType as GroupCaptionEmpty */\n CellType[CellType[\"GroupCaptionEmpty\"] = 8] = \"GroupCaptionEmpty\";\n /** Defines CellType as Expand */\n CellType[CellType[\"Expand\"] = 9] = \"Expand\";\n /** Defines CellType as HeaderIndent */\n CellType[CellType[\"HeaderIndent\"] = 10] = \"HeaderIndent\";\n /** Defines CellType as StackedHeader */\n CellType[CellType[\"StackedHeader\"] = 11] = \"StackedHeader\";\n /** Defines CellType as DetailHeader */\n CellType[CellType[\"DetailHeader\"] = 12] = \"DetailHeader\";\n /** Defines CellType as DetailExpand */\n CellType[CellType[\"DetailExpand\"] = 13] = \"DetailExpand\";\n /** Defines CellType as CommandColumn */\n CellType[CellType[\"CommandColumn\"] = 14] = \"CommandColumn\";\n /** Defines CellType as DetailFooterIntent */\n CellType[CellType[\"DetailFooterIntent\"] = 15] = \"DetailFooterIntent\";\n /** Defines CellType as RowDrag */\n CellType[CellType[\"RowDragIcon\"] = 16] = \"RowDragIcon\";\n /** Defines CellType as RowDragHeader */\n CellType[CellType[\"RowDragHIcon\"] = 17] = \"RowDragHIcon\";\n})(CellType || (CellType = {}));\n/**\n * Defines types of Render\n *\n * @hidden\n */\nexport var RenderType;\n(function (RenderType) {\n /** Defines RenderType as Header */\n RenderType[RenderType[\"Header\"] = 0] = \"Header\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Summary */\n RenderType[RenderType[\"Summary\"] = 2] = \"Summary\";\n})(RenderType || (RenderType = {}));\n/**\n * Defines Predefined toolbar items.\n *\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Print\"] = 5] = \"Print\";\n ToolbarItem[ToolbarItem[\"Search\"] = 6] = \"Search\";\n ToolbarItem[ToolbarItem[\"ColumnChooser\"] = 7] = \"ColumnChooser\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 8] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"WordExport\"] = 11] = \"WordExport\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines types of responsive dialogs\n *\n * @hidden\n */\nexport var ResponsiveDialogAction;\n(function (ResponsiveDialogAction) {\n /** Defines dialog type as Edit */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isEdit\"] = 0] = \"isEdit\";\n /** Defines dialog type as Add */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isAdd\"] = 1] = \"isAdd\";\n /** Defines dialog type as Sort */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isSort\"] = 2] = \"isSort\";\n /** Defines dialog type as Filter */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isFilter\"] = 3] = \"isFilter\";\n})(ResponsiveDialogAction || (ResponsiveDialogAction = {}));\n/**\n * Defines responsive toolbar actions\n *\n * @hidden\n */\nexport var ResponsiveToolbarAction;\n(function (ResponsiveToolbarAction) {\n /** Defines initial responsive toolbar buttons */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isInitial\"] = 0] = \"isInitial\";\n /** Defines responsive toolbar search */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isSearch\"] = 1] = \"isSearch\";\n})(ResponsiveToolbarAction || (ResponsiveToolbarAction = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { isNullOrUndefined, extend, setValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { getForeignData, getUid } from '../../grid/base/util';\n/**\n * GroupModelGenerator is used to generate group caption rows and data rows.\n *\n * @hidden\n */\nvar GroupModelGenerator = /** @class */ (function (_super) {\n __extends(GroupModelGenerator, _super);\n function GroupModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.rows = [];\n /** @hidden */\n _this.index = 0;\n _this.infiniteChildCount = 0;\n _this.renderInfiniteAgg = true;\n _this.parent = parent;\n _this.summaryModelGen = new GroupSummaryModelGenerator(parent);\n _this.captionModelGen = new CaptionSummaryModelGenerator(parent);\n return _this;\n }\n GroupModelGenerator.prototype.generateRows = function (data, args) {\n if (this.parent.groupSettings.columns.length === 0) {\n return _super.prototype.generateRows.call(this, data, args);\n }\n this.isInfiniteScroll = (args.requestType === 'infiniteScroll');\n this.rows = [];\n this.index = this.parent.enableVirtualization || this.isInfiniteScroll ? args.startIndex : 0;\n for (var i = 0, len = data.length; i < len; i++) {\n this.infiniteChildCount = 0;\n this.renderInfiniteAgg = true;\n this.getGroupedRecords(0, data[parseInt(i.toString(), 10)], data.level, i, undefined, this.rows.length);\n }\n this.index = 0;\n if (this.parent.isCollapseStateEnabled()) {\n this.ensureRowVisibility();\n }\n return this.rows;\n };\n GroupModelGenerator.prototype.getGroupedRecords = function (index, data, raw, parentid, childId, tIndex, parentUid) {\n var _a;\n var level = raw;\n if (isNullOrUndefined(data.items)) {\n if (isNullOrUndefined(data.GroupGuid)) {\n this.rows = this.rows.concat(this.generateDataRows(data, index, parentid, this.rows.length, parentUid));\n }\n else {\n for (var j = 0, len = data.length; j < len; j++) {\n this.getGroupedRecords(index, data[parseInt(j.toString(), 10)], data.level, parentid, index, this.rows.length, parentUid);\n }\n }\n }\n else {\n var preCaption = void 0;\n var captionRow = this.generateCaptionRow(data, index, parentid, childId, tIndex, parentUid);\n if (this.isInfiniteScroll) {\n preCaption = this.getPreCaption(index, captionRow.data.key);\n }\n if (!preCaption) {\n this.rows = this.rows.concat(captionRow);\n }\n else {\n captionRow.uid = preCaption.uid;\n }\n if (data.items && data.items.length) {\n this.getGroupedRecords(index + 1, data.items, data.items.level, parentid, index + 1, this.rows.length, captionRow.uid);\n }\n if (this.parent.aggregates.length && this.isRenderAggregate(captionRow)) {\n var rowCnt = this.rows.length;\n (_a = this.rows).push.apply(_a, this.summaryModelGen.generateRows(data, { level: level, parentUid: captionRow.uid }));\n for (var i = rowCnt - 1; i >= 0; i--) {\n if (this.rows[parseInt(i.toString(), 10)].isCaptionRow) {\n this.rows[parseInt(i.toString(), 10)].aggregatesCount = this.rows.length - rowCnt;\n }\n else if (!this.rows[parseInt(i.toString(), 10)].isCaptionRow && !this.rows[parseInt(i.toString(), 10)].isDataRow) {\n break;\n }\n }\n }\n if (preCaption) {\n this.setInfiniteRowVisibility(preCaption);\n }\n }\n };\n GroupModelGenerator.prototype.isRenderAggregate = function (data) {\n if (this.parent.enableInfiniteScrolling) {\n if (!this.renderInfiniteAgg) {\n return false;\n }\n this.getPreCaption(data.indent, data.data.key);\n this.renderInfiniteAgg = data.data.count === this.infiniteChildCount;\n return this.renderInfiniteAgg;\n }\n return !this.parent.enableInfiniteScrolling;\n };\n GroupModelGenerator.prototype.getPreCaption = function (indent, key) {\n var rowObj = this.parent.getRowsObject().concat(this.rows);\n var preCap;\n this.infiniteChildCount = 0;\n var i = rowObj.length;\n while (i--) {\n if (rowObj[parseInt(i.toString(), 10)].isCaptionRow && rowObj[parseInt(i.toString(), 10)].indent === indent\n && rowObj[parseInt(i.toString(), 10)].data.key === key) {\n preCap = rowObj[parseInt(i.toString(), 10)];\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent || rowObj[parseInt(i.toString(), 10)].indent < indent) {\n break;\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent + 1) {\n this.infiniteChildCount++;\n }\n }\n return preCap;\n };\n GroupModelGenerator.prototype.getCaptionRowCells = function (field, indent, data) {\n var cells = [];\n var visibles = [];\n var column = this.parent.getColumnByField(field);\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization) {\n column = this.parent.columns.filter(function (c) { return c.field === field; })[0];\n }\n var groupedLen = this.parent.groupSettings.columns.length;\n var gObj = this.parent;\n if (!this.parent.enableColumnVirtualization || indexes.indexOf(indent) !== -1) {\n for (var i = 0; i < indent; i++) {\n cells.push(this.generateIndentCell());\n }\n cells.push(this.generateCell({}, null, CellType.Expand));\n }\n indent = this.parent.enableColumnVirtualization ? 1 :\n (this.parent.getVisibleColumns().length + groupedLen + (gObj.detailTemplate || gObj.childGrid ? 1 : 0) -\n indent + (this.parent.getVisibleColumns().length ? -1 : 0));\n //Captionsummary cells will be added here.\n if (this.parent.aggregates.length && !this.captionModelGen.isEmpty()) {\n var captionCells = this.captionModelGen.generateRows(data)[0];\n extend(data, captionCells.data);\n var cIndex_1 = 0;\n captionCells.cells.some(function (cell, index) { cIndex_1 = index; return cell.visible && cell.isDataCell; });\n visibles = captionCells.cells.slice(cIndex_1).filter(function (cell) { return cell.visible; });\n if (captionCells.visible && visibles[0].column.field === this.parent.getVisibleColumns()[0].field) {\n visibles = visibles.slice(1);\n }\n if (this.parent.getVisibleColumns().length === 1) {\n visibles = [];\n }\n indent = indent - visibles.length;\n }\n var cols = (!this.parent.enableColumnVirtualization ? [column] : this.parent.getColumns());\n var wFlag = true;\n for (var j = 0; j < cols.length; j++) {\n var tmpFlag = wFlag && indexes.indexOf(indent) !== -1;\n if (tmpFlag) {\n wFlag = false;\n }\n var cellType = !this.parent.enableColumnVirtualization || tmpFlag ?\n CellType.GroupCaption : CellType.GroupCaptionEmpty;\n indent = this.parent.enableColumnVirtualization && cellType === CellType.GroupCaption ? indent + groupedLen : indent;\n if (gObj.isRowDragable()) {\n indent++;\n }\n cells.push(this.generateCell(column, null, cellType, indent));\n }\n cells.push.apply(cells, visibles);\n return cells;\n };\n /**\n * @param {GroupedData} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} parentID - specifies the parentID\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the TIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row} returns the Row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateCaptionRow = function (data, indent, parentID, childID, tIndex, parentUid) {\n var options = {};\n var records = 'records';\n var col = this.parent.getColumnByField(data.field);\n options.data = extend({}, data);\n if (col) {\n options.data.field = data.field;\n }\n options.isDataRow = false;\n options.isExpand = !this.parent.groupSettings.enableLazyLoading && !this.parent.isCollapseStateEnabled();\n options.parentGid = parentID;\n options.childGid = childID;\n options.tIndex = tIndex;\n options.isCaptionRow = true;\n options.parentUid = parentUid;\n options.gSummary = !isNullOrUndefined(data.items[\"\" + records]) ? data.items[\"\" + records].length : data.items.length;\n options.uid = getUid('grid-row');\n var row = new Row(options);\n row.indent = indent;\n this.getForeignKeyData(row);\n row.cells = this.getCaptionRowCells(data.field, indent, row.data);\n return row;\n };\n GroupModelGenerator.prototype.getForeignKeyData = function (row) {\n var data = row.data;\n var col = this.parent.getColumnByField(data.field);\n if (col && col.isForeignColumn && col.isForeignColumn()) {\n var fkValue = (isNullOrUndefined(data.key) ? '' : col.valueAccessor(col.foreignKeyValue, getForeignData(col, {}, data.key)[0], col));\n setValue('foreignKey', fkValue, row.data);\n }\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the tIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row[]} returns the row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateDataRows = function (data, indent, childID, tIndex, parentUid) {\n var rows = [];\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = data.length; i < len; i++, tIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], this.index, i ? undefined : 'e-firstchildrow', indent, childID, tIndex, parentUid);\n for (var j = 0; j < indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(indent) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n this.index++;\n }\n return rows;\n };\n GroupModelGenerator.prototype.generateIndentCell = function () {\n return this.generateCell({}, null, CellType.Indent);\n };\n GroupModelGenerator.prototype.refreshRows = function (input) {\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0; i < input.length; i++) {\n if (input[parseInt(i.toString(), 10)].isDataRow) {\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n for (var j = 0; j < input[parseInt(i.toString(), 10)].indent; j++) {\n if (this.parent.enableColumnVirtualization\n && indexes.indexOf(input[parseInt(i.toString(), 10)].indent) === -1) {\n continue;\n }\n input[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n }\n else {\n var cRow = this.generateCaptionRow(input[parseInt(i.toString(), 10)].data, input[parseInt(i.toString(), 10)].indent);\n input[parseInt(i.toString(), 10)].cells = cRow.cells;\n }\n }\n return input;\n };\n GroupModelGenerator.prototype.setInfiniteRowVisibility = function (caption) {\n if (!caption.isExpand || caption.visible === false) {\n for (var _i = 0, _a = this.rows; _i < _a.length; _i++) {\n var row = _a[_i];\n if (row.parentUid === caption.uid) {\n row.visible = false;\n if (row.isCaptionRow) {\n this.setInfiniteRowVisibility(row);\n }\n }\n }\n }\n };\n GroupModelGenerator.prototype.ensureRowVisibility = function () {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[parseInt(i.toString(), 10)];\n if (!row.isCaptionRow) {\n continue;\n }\n for (var j = i + 1; j < this.rows.length; j++) {\n var childRow = this.rows[parseInt(j.toString(), 10)];\n if (row.uid === childRow.parentUid) {\n this.rows[parseInt(j.toString(), 10)].visible = row.isExpand;\n }\n }\n }\n };\n return GroupModelGenerator;\n}(RowModelGenerator));\nexport { GroupModelGenerator };\n","import { Droppable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, remove, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { getUpdateUsingRaf, appendChildren, setDisplayValue, clearReactVueTemplates } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from './row-renderer';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { isGroupAdaptive } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IGrid} parent - specifies the Igrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n */\n function ContentRender(parent, serviceLocator) {\n var _this = this;\n this.rows = [];\n this.freezeRows = [];\n this.movableRows = [];\n this.freezeRowElements = [];\n /** @hidden */\n this.currentInfo = {};\n /** @hidden */\n this.prevCurrentView = [];\n this.isLoaded = true;\n this.viewColIndexes = [];\n this.drop = function (e) {\n _this.parent.notify(events.columnDrop, { target: e.target, droppedElement: e.droppedElement });\n remove(e.droppedElement);\n };\n this.infiniteCache = {};\n this.isRemove = false;\n /** @hidden */\n this.visibleRows = [];\n this.visibleFrozenRows = [];\n this.rightFreezeRows = [];\n this.isAddRows = false;\n this.isInfiniteFreeze = false;\n this.useGroupCache = false;\n /** @hidden */\n this.tempFreezeRows = [];\n this.rafCallback = function (args) {\n var arg = args;\n return function () {\n if (_this.parent.isFrozenGrid() && (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling)) {\n var tableName = args.tableName;\n _this.isLoaded = _this.parent.getFrozenMode() === literals.leftRight ? tableName === 'frozen-right' : tableName === 'movable';\n if (_this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll' && _this.isLoaded) {\n var mHdr = [].slice.call(_this.parent.getMovableVirtualHeader().getElementsByClassName(literals.row));\n var fHdr = [].slice.call(_this.parent.getFrozenVirtualHeader().getElementsByClassName(literals.row));\n _this.isLoaded = mHdr.length === fHdr.length;\n }\n }\n _this.ariaService.setBusy(_this.getPanel().querySelector('.' + literals.content), false);\n if (_this.parent.isDestroyed) {\n return;\n }\n var rows = _this.rows.slice(0);\n if (_this.parent.enableInfiniteScrolling) {\n if (_this.parent.groupSettings.enableLazyLoading) {\n for (var i = 0; i < _this.visibleRows.length; i++) {\n _this.setRowsInLazyGroup(_this.visibleRows[parseInt(i.toString(), 10)], i);\n }\n }\n rows = _this.parent.getRowsObject();\n var prevPage = arg.prevPage;\n if (_this.parent.infiniteScrollSettings.enableCache && prevPage) {\n var maxBlock = _this.parent.infiniteScrollSettings.maxBlocks;\n rows = [];\n var rowIdx = (parseInt(_this.rowElements[0].getAttribute('data-rowindex'), 10) + 1);\n var startIdx = Math.ceil(rowIdx / _this.parent.pageSettings.pageSize);\n for (var i = 0, count = startIdx; i < maxBlock; i++, count++) {\n if (_this.infiniteCache[parseInt(count.toString(), 10)]) {\n rows = rows.concat(_this.infiniteCache[parseInt(count.toString(), 10)]);\n }\n }\n }\n }\n if (_this.parent.isFrozenGrid()) {\n rows = args.isFrozen ? _this.freezeRows : args.renderFrozenRightContent ? _this.parent.getFrozenRightRowsObject()\n : _this.movableRows;\n }\n _this.parent.notify(events.contentReady, { rows: rows, args: arg });\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n if (!_this.parent.isInitialLoad) {\n _this.parent.focusModule.setFirstFocusableTabIndex();\n }\n if (_this.isLoaded) {\n _this.parent.isManualRefresh = false;\n if (_this.parent.enableInfiniteScrolling && _this.parent.groupSettings.enableLazyLoading && args.requestType === 'sorting') {\n _this.parent.infiniteScrollModule['groupCaptionAction'] = undefined;\n }\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n _this.parent.parentDetails.parentInstObj.isReact;\n if ((_this.parent.isReact || isReactChild) && _this.parent.element.querySelectorAll('.e-templatecell').length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = _this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(events.dataBound, {}, function () {\n if (thisRef_1.parent.allowTextWrap) {\n thisRef_1.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n });\n }\n else {\n _this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n }\n if (_this.parent.allowTextWrap && _this.parent.height === 'auto') {\n if (_this.parent.getContentTable().scrollHeight > _this.parent.getContent().clientHeight) {\n _this.parent.scrollModule.setPadding();\n }\n else {\n _this.parent.scrollModule.removePadding();\n }\n }\n }\n if (arg) {\n var action = (arg.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, arg);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.isLoaded) {\n _this.parent.hideSpinner();\n }\n };\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.parent.enableDeepCompare = this.parent.getDataModule().isRemote();\n this.generator = this.getModelGenerator();\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.enableVirtualization\n && !this.parent.groupSettings.enableLazyLoading) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.colGroupRefresh, this.colGroupRefresh, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.refreshInfiniteModeBlocks, this.refreshContentRows, this);\n this.parent.on(events.beforeCellFocused, this.beforeCellFocused, this);\n this.parent.on(events.destroy, this.droppableDestroy, this);\n }\n ContentRender.prototype.beforeCellFocused = function (e) {\n if (e.byKey && (e.keyArgs.action === 'upArrow' || e.keyArgs.action === 'downArrow')) {\n this.pressedKey = e.keyArgs.action;\n }\n else {\n this.pressedKey = undefined;\n }\n };\n /**\n * The function is used to render grid content div\n *\n * @returns {void}\n */\n ContentRender.prototype.renderPanel = function () {\n var gObj = this.parent;\n var div = this.parent.element.querySelector('.' + literals.gridContent);\n if (div) {\n this.ariaService.setOptions(this.parent.element.querySelector('.' + literals.content), { busy: false });\n this.setPanel(div);\n return;\n }\n div = this.parent.createElement('div', { className: literals.gridContent });\n var innerDiv = this.parent.createElement('div', {\n className: literals.content\n });\n this.ariaService.setOptions(innerDiv, { busy: false });\n div.appendChild(innerDiv);\n this.setPanel(div);\n gObj.element.appendChild(div);\n };\n /**\n * The function is used to render grid content table\n *\n * @returns {void}\n */\n ContentRender.prototype.renderTable = function () {\n var contentDiv = this.getPanel();\n var virtualTable = contentDiv.querySelector('.e-virtualtable');\n var virtualTrack = contentDiv.querySelector('.e-virtualtrack');\n if (this.parent.enableVirtualization && !isNullOrUndefined(virtualTable) && !isNullOrUndefined(virtualTrack)) {\n remove(virtualTable);\n remove(virtualTrack);\n }\n contentDiv.appendChild(this.createContentTable('_content_table'));\n this.setTable(contentDiv.querySelector('.' + literals.table));\n this.ariaService.setOptions(this.getTable(), {\n multiselectable: this.parent.selectionSettings.type === 'Multiple'\n });\n this.initializeContentDrop();\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdrcont');\n }\n };\n /**\n * The function is used to create content table elements\n *\n * @param {string} id - specifies the id\n * @returns {Element} returns the element\n * @hidden\n */\n ContentRender.prototype.createContentTable = function (id) {\n var innerDiv = this.getPanel().firstElementChild;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table = innerDiv.querySelector('.' + literals.table) ? innerDiv.querySelector('.' + literals.table) :\n this.parent.createElement('table', {\n className: literals.table, attrs: {\n cellspacing: '0.25px', role: 'grid',\n id: this.parent.element.id + id\n }\n });\n this.setColGroup(this.parent.getHeaderTable().querySelector(literals.colGroup).cloneNode(true));\n table.appendChild(this.getColGroup());\n table.appendChild(this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }));\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * Refresh the content of the Grid.\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n // tslint:disable-next-line:max-func-body-length\n ContentRender.prototype.refreshContentRows = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var dataSource = this.currentMovableRows || gObj.currentViewData;\n var contentModule = this.parent.contentModule;\n var isReact = gObj.isReact && !isNullOrUndefined(gObj.rowTemplate);\n var frag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n if (!this.initialPageRecords) {\n this.initialPageRecords = extend([], dataSource);\n }\n var hdrfrag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n var refFrag;\n var refHdrfrag;\n if (gObj.isReact && gObj.rowTemplate) {\n refFrag = frag;\n refHdrfrag = hdrfrag;\n }\n var columns = gObj.getColumns();\n var tr;\n var hdrTbody;\n var frzCols = gObj.getFrozenColumns();\n var isFrozenGrid = this.parent.isFrozenGrid();\n var trElement;\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInfiniteScroll = this.parent.enableInfiniteScrolling\n && args.requestType === 'infiniteScroll';\n gObj.notify(events.destroyChildGrid, {});\n this.rowElements = [];\n this.rows = [];\n this.tempFreezeRows = [];\n var fCont = this.getPanel().querySelector('.' + literals.frozenContent);\n var mCont = this.getPanel().querySelector('.' + literals.movableContent);\n var cont = this.getPanel().querySelector('.' + literals.content);\n var tbdy;\n var tableName;\n if (isGroupAdaptive(gObj)) {\n if (['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder', 'save', 'delete']\n .some(function (value) { return args.requestType === value; })) {\n this.emptyVcRows();\n }\n }\n var modelData;\n if (this.parent.enableVirtualization && this.parent.isFrozenGrid()) {\n if (this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll'\n && args.virtualInfo.sentinelInfo.axis === 'X') {\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n args.renderMovableContent = true;\n }\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n }\n else {\n modelData = this.checkCache(modelData, args);\n if (!this.isAddRows && !this.useGroupCache) {\n modelData = this.generator.generateRows(dataSource, args);\n }\n }\n this.setGroupCache(modelData, args);\n this.parent.notify(events.setInfiniteCache, { isInfiniteScroll: isInfiniteScroll, modelData: modelData, args: args });\n var idx = modelData[0].cells[0].index;\n if (isFrozenGrid) {\n tableName = contentModule.setTbody(modelData, args);\n tbdy = contentModule.getTbody(tableName);\n }\n var isFrozenLeft = this.parent.getFrozenMode() === literals.leftRight && tableName === literals.frozenRight;\n /* eslint-disable */\n if (!(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && this.parent.registeredTemplate\n && this.parent.registeredTemplate.template && !args.isFrozen && !isFrozenLeft) {\n var templatetoclear = [];\n for (var i = 0; i < this.parent.registeredTemplate.template.length; i++) {\n for (var j = 0; j < this.parent.registeredTemplate.template[i].rootNodes.length; j++) {\n if (isNullOrUndefined(this.parent.registeredTemplate.template[i].rootNodes[j].parentNode)) {\n templatetoclear.push(this.parent.registeredTemplate.template[i]);\n /* eslint-enable */\n }\n }\n }\n this.parent.destroyTemplate(['template'], templatetoclear);\n }\n if ((this.parent.isReact || this.parent.isVue) && !(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && !args.isFrozen) {\n var templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'rowTemplate', 'detailTemplate',\n 'captionTemplate', 'commandsTemplate', 'groupFooterTemplate', 'groupCaptionTemplate'\n ];\n if (args.requestType === 'infiniteScroll' && this.parent.infiniteScrollSettings.enableCache) {\n templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'commandsTemplate'\n ];\n }\n clearReactVueTemplates(this.parent, templates);\n }\n if (this.parent.enableColumnVirtualization) {\n var cellMerge = new CellMergeRender(this.serviceLocator, this.parent);\n cellMerge.updateVirtualCells(modelData);\n }\n if (!isFrozenGrid) {\n this.tbody = this.getTable().querySelector(literals.tbody);\n }\n var startIndex = 0;\n var blockLoad = true;\n if (isGroupAdaptive(gObj) && gObj.vcRows.length) {\n var top_1 = 'top';\n var scrollTop = !isNullOrUndefined(args.virtualInfo.offsets) ? args.virtualInfo.offsets.top :\n (!isNullOrUndefined(args.scrollTop) ? args.scrollTop[\"\" + top_1] : 0);\n if (scrollTop !== 0) {\n var offsets_1 = gObj.vGroupOffsets;\n var bSize = gObj.pageSettings.pageSize / 2;\n var values = Object.keys(offsets_1).map(function (key) { return offsets_1[\"\" + key]; });\n for (var m = 0; m < values.length; m++) {\n if (scrollTop < values[parseInt(m.toString(), 10)]) {\n if (!isNullOrUndefined(args.virtualInfo) && args.virtualInfo.direction === 'up') {\n startIndex = m > 0 ? ((m - 1) * bSize) : (m * bSize);\n break;\n }\n else {\n startIndex = m * bSize;\n if (this.parent.contentModule.isEndBlock(m) || this.parent.contentModule.isEndBlock(m + 1)) {\n args.virtualInfo.blockIndexes = [m, m + 1];\n }\n break;\n }\n }\n }\n if (Math.round(scrollTop + this.contentPanel.firstElementChild.offsetHeight) >=\n this.contentPanel.firstElementChild.scrollHeight && !args.rowObject) {\n blockLoad = false;\n }\n }\n }\n var isVFFrozenOnly = gObj.frozenRows && !gObj.isFrozenGrid() && this.parent.enableVirtualization\n && args.requestType === 'reorder';\n if ((gObj.frozenRows && args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo.axis === 'X') || isVFFrozenOnly) {\n var bIndex = args.virtualInfo.blockIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n if (isVFFrozenOnly) {\n args.virtualInfo.page = 1;\n }\n var data = isVFFrozenOnly ? this.initialPageRecords : dataSource;\n var mhdrData = this.vgenerator\n .generateRows(data, args);\n mhdrData.splice(this.parent.frozenRows);\n for (var i = 0; i < this.parent.frozenRows; i++) {\n mhdrData[parseInt(i.toString(), 10)].cells.splice(0, this.parent.getFrozenColumns());\n tr = row.render(mhdrData[parseInt(i.toString(), 10)], columns);\n hdrfrag.appendChild(tr);\n }\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.page = page;\n if (isVFFrozenOnly && args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n this.virtualFrozenHdrRefresh(hdrfrag, modelData, row, args, dataSource, columns);\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage] = [];\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading && args.requestType === 'delete') { // || (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache))\n this.visibleRows = [];\n }\n var _loop_1 = function (i, len) {\n this_1.rows.push(modelData[parseInt(i.toString(), 10)]);\n if (isFrozenGrid) {\n this_1.tempFreezeRows.push(modelData[parseInt(i.toString(), 10)]);\n }\n if (this_1.parent.groupSettings.enableLazyLoading && !this_1.useGroupCache && this_1.parent.groupSettings.columns.length) {\n (this_1.parent.enableVirtualization ? this_1.parent.lazyLoadRender :\n this_1.parent.contentModule).refRowsObj[this_1.parent.pageSettings.currentPage].push(modelData[parseInt(i.toString(), 10)]);\n this_1.setRowsInLazyGroup(modelData[parseInt(i.toString(), 10)], i);\n if (isNullOrUndefined(modelData[parseInt(i.toString(), 10)].indent)) {\n return \"continue\";\n }\n }\n this_1.setInfiniteVisibleRows(args, modelData[parseInt(i.toString(), 10)], tableName);\n if (isGroupAdaptive(gObj) && args.virtualInfo && args.virtualInfo.blockIndexes\n && (this_1.rowElements.length >= (args.virtualInfo.blockIndexes.length * this_1.parent.contentModule.getBlockSize()))\n && blockLoad) {\n this_1.parent.currentViewData['records'] = this_1.rows.map(function (m) { return m.data; });\n return \"break\";\n }\n if (!gObj.rowTemplate) {\n tr = row.render(modelData[parseInt(i.toString(), 10)], columns);\n var isVFreorder = this_1.ensureFrozenHeaderRender(args);\n if (gObj.frozenRows && i < gObj.frozenRows && !isInfiniteScroll && args.requestType !== 'virtualscroll' && isVFreorder\n && this_1.ensureVirtualFrozenHeaderRender(args)) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n if (modelData[parseInt(i.toString(), 10)].isExpand) {\n gObj.notify(events.expandChildGrid, tr.cells[gObj.groupSettings.columns.length]);\n }\n }\n else {\n var rowTemplateID = gObj.element.id + 'rowTemplate';\n var elements = void 0;\n if (gObj.isReact) {\n var isHeader = gObj.frozenRows && i < gObj.frozenRows;\n var copied = extend({ index: i }, dataSource[parseInt(i.toString(), 10)]);\n gObj.getRowTemplate()(copied, gObj, 'rowTemplate', rowTemplateID, null, null, isHeader ? hdrfrag : frag);\n if (gObj.requireTemplateRef) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this_1;\n thisRef_2.parent.renderTemplates(function () {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = refHdrfrag.childNodes[parseInt(i.toString(), 10)];\n }\n else {\n trElement = refFrag.childNodes[parseInt(i.toString(), 10)];\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data,\n row: trElement ? trElement : tr };\n thisRef_2.parent.trigger(events.rowDataBound, arg);\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (thisRef_2.parent.enableVirtualization &&\n thisRef_2.parent.groupSettings.enableLazyLoading)) {\n thisRef_2.rowElements.push(tr);\n }\n thisRef_2.ariaService.setOptions(thisRef_2.getTable(), {\n colcount: gObj.getColumns().length.toString()\n });\n if (i === modelData.length - 1) {\n refFrag = null;\n refHdrfrag = null;\n }\n });\n return \"continue\";\n }\n }\n else {\n elements = gObj.getRowTemplate()(extend({ index: i }, dataSource[parseInt(i.toString(), 10)]), gObj, 'rowTemplate', rowTemplateID, undefined, undefined, undefined, this_1.parent['root']);\n }\n if (!gObj.isReact && elements[0].tagName === 'TBODY') {\n for (var j = 0; j < elements.length; j++) {\n var isTR = elements[parseInt(j.toString(), 10)].nodeName.toLowerCase() === 'tr';\n if (isTR || (elements[parseInt(j.toString(), 10)].querySelectorAll && elements[parseInt(j.toString(), 10)].querySelectorAll('tr').length)) {\n tr = isTR ? elements[parseInt(j.toString(), 10)] : elements[parseInt(j.toString(), 10)].querySelector('tr');\n }\n }\n if (gObj.frozenRows && i < gObj.frozenRows) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n }\n else {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = !gObj.isReact ? appendChildren(hdrfrag, elements) : hdrfrag.lastElementChild;\n }\n else {\n // frag.appendChild(tr);\n if (!gObj.isReact) {\n tr = appendChildren(frag, elements);\n }\n trElement = gObj.isReact ? frag.lastElementChild : tr.lastElementChild;\n }\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data, row: trElement ? trElement : tr };\n this_1.parent.trigger(events.rowDataBound, arg);\n }\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (this_1.parent.enableVirtualization &&\n this_1.parent.groupSettings.enableLazyLoading)) {\n this_1.rowElements.push(tr);\n }\n this_1.ariaService.setOptions(this_1.getTable(), { colcount: gObj.getColumns().length.toString() });\n };\n var this_1 = this;\n for (var i = startIndex, len = modelData.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj && gObj.parentDetails.parentInstObj.isReact;\n if ((gObj.isReact || isReactChild) && !gObj.requireTemplateRef) {\n gObj.renderTemplates();\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading) {\n this.parent.contentModule.refRowsObj[this.parent.pageSettings.currentPage] =\n this.parent.contentModule['groupCache'][this.parent.pageSettings.currentPage];\n }\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.parent.notify(events.refreshExpandandCollapse, {\n rows: (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage]\n });\n }\n if (isFrozenGrid) {\n contentModule.splitRows(tableName);\n }\n gObj.removeMaskRow();\n this.parent.notify('removeGanttShimmer', { requestType: 'hideShimmer' });\n if ((gObj.frozenRows && args.requestType !== 'virtualscroll' && !isInfiniteScroll && this.ensureVirtualFrozenHeaderRender(args))\n || (args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'X')) {\n hdrTbody = isFrozenGrid ? contentModule.getFrozenHeader(tableName) : gObj.getHeaderTable().querySelector(literals.tbody);\n if (isReact) {\n var parentTable = hdrTbody.parentElement;\n remove(hdrTbody);\n parentTable.appendChild(hdrfrag);\n }\n else {\n hdrTbody.innerHTML = '';\n hdrTbody.appendChild(hdrfrag);\n }\n }\n if (!gObj.enableVirtualization && gObj.frozenRows && idx === 0 && cont.offsetHeight === Number(gObj.height)) {\n cont.style.height = (cont.offsetHeight - hdrTbody.offsetHeight) + 'px';\n }\n args.rows = this.rows.slice(0);\n if (isFrozenGrid) {\n contentModule.setIsFrozen(args, tableName);\n }\n this.index = idx;\n getUpdateUsingRaf(function () {\n _this.parent.notify(events.beforeFragAppend, args);\n var isVFTable = _this.parent.enableVirtualization && _this.parent.isFrozenGrid();\n if (!_this.parent.enableVirtualization && !isInfiniteScroll) {\n if (_this.parent.isFrozenGrid()) {\n remove(contentModule.getTbody(tableName));\n tbdy = _this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n }\n else {\n if (!gObj.isReact) {\n _this.tbody.innerHTML = '';\n }\n if (!isNullOrUndefined(_this.tbody.parentElement)) {\n remove(_this.tbody);\n }\n else {\n remove(gObj.getContentTable().querySelector(literals.tbody));\n }\n _this.tbody = _this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n }\n }\n if (isFrozenGrid && !isVFTable && !_this.parent.enableInfiniteScrolling) {\n _this.appendContent(tbdy, frag, args, tableName);\n }\n else {\n if (gObj.rowTemplate) {\n updateBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate', gObj);\n }\n if (isVFTable) {\n if (args.renderFrozenRightContent) {\n var frCont = gObj.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n _this.appendContent(frCont, frag, args);\n }\n else if (!args.renderMovableContent) {\n _this.appendContent(fCont.querySelector(literals.tbody), frag, args);\n }\n else {\n _this.appendContent(mCont.querySelector(literals.tbody), frag, args);\n args.renderMovableContent = false;\n }\n if (!_this.parent.getFrozenColumns()) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n }\n else {\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.isAddRows = false;\n _this.parent.notify(events.removeInfiniteRows, { args: args });\n _this.parent.notify(events.appendInfiniteContent, {\n tbody: tbdy ? tbdy : _this.tbody, frag: frag, args: args, rows: _this.rows,\n rowElements: _this.rowElements, visibleRows: _this.visibleRows,\n tableName: tableName\n });\n if (!frzCols && isFrozenGrid) {\n if ((gObj.getFrozenMode() !== literals.leftRight\n && (tableName === literals.frozenLeft || tableName === literals.frozenRight))\n || (gObj.getFrozenMode() === literals.leftRight\n && (tableName === literals.frozenLeft || tableName === 'movable'))) {\n _this.refreshContentRows(extend({}, args));\n }\n }\n }\n else {\n _this.useGroupCache = false;\n _this.appendContent(_this.tbody, frag, args);\n }\n }\n }\n if (frzCols) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n frag = null;\n }, this.rafCallback(extend({}, args)));\n };\n ContentRender.prototype.emptyVcRows = function () {\n this.parent.vcRows = [];\n this.parent.vRows = [];\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ContentRender.prototype.appendContent = function (tbody, frag, args, tableName) {\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (isReact) {\n this.getTable().appendChild(frag);\n }\n else {\n tbody.appendChild(frag);\n this.getTable().appendChild(tbody);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n var cells = tbody.querySelectorAll('td');\n for (var i = 0; i < cells.length; i++) {\n var headerCellHeight = parseFloat(document.defaultView.getComputedStyle(cells[parseInt(i.toString(), 10)], '::before').getPropertyValue('height'));\n var cellHeight = cells[parseInt(i.toString(), 10)].offsetHeight;\n if (headerCellHeight > cellHeight) {\n cells[parseInt(i.toString(), 10)].style.height = headerCellHeight + 'px';\n cells[parseInt(i.toString(), 10)].style.boxSizing = 'content-box';\n }\n }\n }\n };\n ContentRender.prototype.setRowsInLazyGroup = function (row, index) {\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).maintainRows(row, index);\n }\n };\n ContentRender.prototype.setGroupCache = function (data, args) {\n if (!this.useGroupCache && this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(events.setGroupCache, { args: args, data: data });\n }\n };\n ContentRender.prototype.ensureFrozenHeaderRender = function (args) {\n return !((this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) || (this.parent.infiniteScrollSettings.enableCache\n && this.parent.frozenRows && this.parent.infiniteScrollModule.requestType === 'delete'\n && this.parent.pageSettings.currentPage !== 1));\n };\n ContentRender.prototype.ensureVirtualFrozenHeaderRender = function (args) {\n return !(this.parent.enableVirtualization && args.requestType === 'delete');\n };\n ContentRender.prototype.checkCache = function (modelData, args) {\n if (this.parent.infiniteScrollSettings.enableCache && args.requestType === 'infiniteScroll') {\n var index = args.isFrozen ? 1 : 0;\n var frozenCols = this.parent.isFrozenGrid();\n this.isAddRows = !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage]);\n if (frozenCols && !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage])) {\n this.isAddRows = this.infiniteCache[this.parent.pageSettings\n .currentPage][parseInt(index.toString(), 10)].length !== 0;\n }\n if (this.isAddRows) {\n var data = !frozenCols ? this.infiniteCache[this.parent.pageSettings.currentPage]\n : this.infiniteCache[this.parent.pageSettings.currentPage][parseInt(index.toString(), 10)];\n modelData = this.parent.pageSettings.currentPage === 1 ? data.slice(this.parent.frozenRows) : data;\n }\n return modelData;\n }\n if (this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length && (args.requestType === 'paging'\n || args.requestType === 'columnstate' || args.requestType === 'reorder' || args.requestType === 'virtualscroll')\n && (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).getGroupCache()[this.parent.pageSettings.currentPage]) {\n if (!this.parent.enableVirtualization) {\n this.useGroupCache = true;\n }\n return this.parent.enableVirtualization ? this.parent.getRowsObject() :\n this.parent.contentModule.initialGroupRows(args.requestType === 'reorder');\n }\n return null;\n };\n ContentRender.prototype.setInfiniteVisibleRows = function (args, data, tableName) {\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache) {\n if (frozenCols) {\n if (tableName === literals.frozenLeft || (this.parent.getFrozenMode() === 'Right' && tableName === literals.frozenRight)) {\n this.visibleFrozenRows.push(data);\n }\n else if (tableName === 'movable') {\n this.visibleRows.push(data);\n }\n else {\n this.rightFreezeRows.push(data);\n }\n }\n else if (!this.parent.infiniteScrollSettings.enableCache) {\n this.visibleRows.push(data);\n }\n }\n };\n ContentRender.prototype.getCurrentBlockInfiniteRecords = function (isFreeze) {\n var data = [];\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.infiniteCache).length) {\n return [];\n }\n var frozenCols = this.parent.isFrozenGrid();\n var rows = this.parent.getRows();\n var index = parseInt(rows[this.parent.frozenRows].getAttribute(literals.dataRowIndex), 10);\n var first = Math.ceil((index + 1) / this.parent.pageSettings.pageSize);\n index = parseInt(rows[rows.length - 1].getAttribute(literals.dataRowIndex), 10);\n var last = Math.ceil((index + (rows.length ? 1 : 0)) / this.parent.pageSettings.pageSize);\n if (frozenCols) {\n var idx = isFreeze ? 0 : 1;\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[parseInt(i.toString(), 10)][parseInt(idx.toString(), 10)]\n : data.concat(this.infiniteCache[parseInt(i.toString(), 10)][parseInt(idx.toString(), 10)]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1][parseInt(idx.toString(), 10)]\n .slice(0, this.parent.frozenRows).concat(data);\n }\n }\n else {\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[parseInt(i.toString(), 10)]\n : data.concat(this.infiniteCache[parseInt(i.toString(), 10)]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n }\n return data;\n };\n ContentRender.prototype.getReorderedVFRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.getReorderedRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.virtualFrozenHdrRefresh = function (hdrfrag, modelData, row, args, dataSource, columns) {\n if (this.parent.frozenRows && this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) {\n var tr = void 0;\n var fhdrData = [];\n if (this.parent.isFrozenGrid()) {\n this.currentMovableRows = dataSource;\n fhdrData = this.getReorderedVFRows(args);\n }\n else {\n fhdrData = this.getReorderedRows(args);\n }\n for (var i = 0; i < fhdrData.length; i++) {\n tr = row.render(fhdrData[parseInt(i.toString(), 10)], columns);\n hdrfrag.appendChild(tr);\n }\n if (args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n if (args.renderMovableContent) {\n this.parent.currentViewData = this.currentMovableRows;\n this.currentMovableRows = null;\n }\n }\n };\n ContentRender.prototype.getInfiniteRows = function () {\n var rows = [];\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var keys = Object.keys(this.infiniteCache);\n for (var i = 0; i < keys.length; i++) {\n rows = !frozenCols ? rows.concat(this.infiniteCache[keys[parseInt(i.toString(), 10)]]) : rows.concat(this.infiniteCache[keys[parseInt(i.toString(), 10)]][0]);\n }\n }\n else {\n rows = frozenCols ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return rows;\n };\n ContentRender.prototype.getInfiniteMovableRows = function () {\n var infiniteCacheRows = this.getCurrentBlockInfiniteRecords();\n var infiniteRows = this.parent.enableInfiniteScrolling ? infiniteCacheRows.length ? infiniteCacheRows\n : this.visibleRows : [];\n return infiniteRows;\n };\n /**\n * Get the content div element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Set the content div element of grid\n *\n * @param {Element} panel - specifies the panel\n * @returns {void}\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the content table element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getTable = function () {\n return this.contentTable;\n };\n /**\n * Set the content table element of grid\n *\n * @param {Element} table - specifies the table\n * @returns {void}\n */\n ContentRender.prototype.setTable = function (table) {\n this.contentTable = table;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.parent.getFrozenColumns() ? this.freezeRows : this.rows;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.getMovableRows = function () {\n var infiniteRows = this.getInfiniteMovableRows();\n return infiniteRows.length ? infiniteRows : this.movableRows;\n };\n /**\n * Get the content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getRowElements = function () {\n return this.parent.getFrozenColumns() ? this.freezeRowElements : this.rowElements;\n };\n /**\n * Get the Freeze pane movable content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getMovableRowElements = function () {\n return this.rowElements;\n };\n /**\n * Get the content table data row elements\n *\n * @param {Element[]} elements - specifies the elements\n * @returns {void}\n */\n ContentRender.prototype.setRowElements = function (elements) {\n this.rowElements = elements;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n ContentRender.prototype.setColGroup = function (colGroup) {\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n return this.colgroup = colGroup;\n };\n /**\n * Function to hide content table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n ContentRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var isFrozenGrid = this.parent.isFrozenGrid();\n var frzCols = gObj.getFrozenColumns();\n var rows = [];\n if (isFrozenGrid) {\n var fRows = this.freezeRows;\n var mRows = this.movableRows;\n var rowLen = fRows.length;\n var cellLen = void 0;\n var rightRows = [];\n if (gObj.getFrozenMode() === literals.leftRight) {\n rightRows = gObj.getFrozenRightRowsObject();\n }\n for (var i = 0, row = void 0; i < rowLen; i++) {\n cellLen = mRows[parseInt(i.toString(), 10)].cells.length;\n var rightLen = rightRows.length ? rightRows[parseInt(i.toString(), 10)].cells.length : 0;\n row = fRows[parseInt(i.toString(), 10)].clone();\n for (var j = 0; j < cellLen; j++) {\n row.cells.push(mRows[parseInt(i.toString(), 10)].cells[parseInt(j.toString(), 10)]);\n }\n for (var k = 0; k < rightLen; k++) {\n row.cells.push(rightRows[parseInt(i.toString(), 10)].cells[parseInt(k.toString(), 10)]);\n }\n rows.push(row);\n }\n }\n else {\n rows = this.getRows();\n }\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var needFullRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n needFullRefresh = false;\n }\n var tr = gObj.getDataRows();\n var args = {};\n var infiniteData = this.infiniteRowVisibility();\n var contentrows = infiniteData ? infiniteData\n : this.rows.filter(function (row) { return !row.isDetailRow; });\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n var idx = this.parent.getNormalizedColumnIndex(column.uid);\n var colIdx = this.parent.getColumnIndexByUid(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n if (isFrozenGrid) {\n if (column.getFreezeTableName() !== 'movable') {\n if (column.getFreezeTableName() === literals.frozenRight) {\n var left = this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n colIdx = idx = idx - (left + movable);\n var colG = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector(literals.colGroup);\n setStyleAttribute(colG.childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n contentrows = gObj.getFrozenRightRowsObject();\n tr = gObj.getFrozenRightDataRows();\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n var infiniteFreezeData = this.infiniteRowVisibility(true);\n contentrows = infiniteFreezeData ? infiniteFreezeData : this.freezeRows;\n tr = gObj.getDataRows();\n }\n }\n else {\n var mTable = gObj.getContent().querySelector('.' + literals.movableContent).querySelector(literals.colGroup);\n colIdx = idx = idx - frzCols - this.parent.getFrozenLeftColumnsCount();\n setStyleAttribute(mTable.childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n tr = gObj.getMovableDataRows();\n var infiniteMovableData = this.infiniteRowVisibility();\n contentrows = infiniteMovableData ? infiniteMovableData : this.movableRows;\n }\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n }\n if (!needFullRefresh) {\n this.setDisplayNone(tr, colIdx, displayVal, contentrows);\n if (isFrozenGrid) {\n this.parent.notify(events.freezeRender, { case: 'refreshHeight', isModeChg: true });\n }\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (needFullRefresh) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n if (!this.parent.getFrozenColumns()) {\n this.parent.notify(events.partialRefresh, { rows: contentrows, args: args });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: this.freezeRows, args: { isFrozen: true, rows: this.freezeRows } });\n this.parent.notify(events.partialRefresh, { rows: this.movableRows, args: { isFrozen: false, rows: this.movableRows } });\n }\n }\n };\n /**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.setDisplayNone = function (tr, idx, displayVal, rows) {\n setDisplayValue(tr, idx, displayVal, rows, this.parent, this.parent.isRowDragable());\n this.parent.notify(events.infiniteShowHide, { visible: displayVal, index: idx, isFreeze: this.isInfiniteFreeze });\n };\n ContentRender.prototype.infiniteRowVisibility = function (isFreeze) {\n var infiniteData;\n if (this.parent.enableInfiniteScrolling) {\n this.isInfiniteFreeze = isFreeze;\n if (this.parent.infiniteScrollSettings.enableCache) {\n infiniteData = isFreeze ? this.getCurrentBlockInfiniteRecords(true) : this.getCurrentBlockInfiniteRecords();\n }\n else {\n infiniteData = isFreeze ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return infiniteData;\n };\n ContentRender.prototype.colGroupRefresh = function () {\n if (this.getColGroup()) {\n var colGroup = void 0;\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n colGroup = this.parent.getMovableVirtualHeader()\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').cloneNode(true);\n }\n else {\n colGroup = this.getHeaderColGroup();\n }\n this.getTable().replaceChild(colGroup, this.getColGroup());\n this.setColGroup(colGroup);\n }\n };\n ContentRender.prototype.getHeaderColGroup = function () {\n return this.parent.element.querySelector('.' + literals.gridHeader)\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').cloneNode(true);\n };\n ContentRender.prototype.initializeContentDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n ContentRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n };\n ContentRender.prototype.canSkip = function (column, row, index) {\n /**\n * Skip the toggle visiblity operation when one of the following success\n * 1. Grid has empty records\n * 2. column visible property is unchanged\n * 3. cell`s isVisible property is same as column`s visible property.\n */\n return isNullOrUndefined(row) || //(1)\n isNullOrUndefined(column.visible) || //(2)\n row.cells[parseInt(index.toString(), 10)].visible === column.visible; //(3)\n };\n ContentRender.prototype.getModelGenerator = function () {\n return this.generator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n };\n ContentRender.prototype.renderEmpty = function (tbody) {\n this.getTable().appendChild(tbody);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector(literals.tbody).innerHTML = '';\n }\n };\n ContentRender.prototype.setSelection = function (uid, set, clearAll) {\n this.parent.notify(events.setFreezeSelection, { uid: uid, set: set, clearAll: clearAll });\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen && this.parent.enableVirtualization) {\n return;\n }\n if (isFrozen) {\n var rows = this.getMovableRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].isSelected = set;\n }\n }\n var row = this.getRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var j = 0; j < row.length; j++) {\n row[parseInt(j.toString(), 10)].isSelected = set;\n var cells = row[parseInt(j.toString(), 10)].cells;\n for (var k = 0; k < cells.length; k++) {\n cells[parseInt(k.toString(), 10)].isSelected = set;\n }\n }\n };\n ContentRender.prototype.getRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return !isNullOrUndefined(index) ? this.parent.getDataRows()[parseInt(index.toString(), 10)] : undefined;\n };\n ContentRender.prototype.getInfiniteRowIndex = function (index) {\n if (this.parent.infiniteScrollSettings.enableCache && !isNullOrUndefined(index)) {\n var fRows = this.parent.frozenRows;\n var idx = fRows > index ? 0 : fRows;\n var firstRowIndex = parseInt(this.parent.getRows()[parseInt(idx.toString(), 10)]\n .getAttribute(literals.dataRowIndex), 10);\n index = fRows > index ? index : (index - firstRowIndex) + fRows;\n }\n return index;\n };\n ContentRender.prototype.getVirtualRowIndex = function (index) {\n return index;\n };\n ContentRender.prototype.getMovableRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return !isNullOrUndefined(index) ? this.parent.getMovableDataRows()[parseInt(index.toString(), 10)] : undefined;\n };\n ContentRender.prototype.enableAfterRender = function (e) {\n if (e.module === 'group' && e.enable) {\n this.generator = this.getModelGenerator();\n }\n };\n ContentRender.prototype.setRowObjects = function (rows) {\n this.rows = rows;\n };\n /**\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.immutableModeRendering = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n gObj.hideSpinner();\n var key = gObj.getPrimaryKeyFieldNames()[0];\n var oldKeys = {};\n var newKeys = {};\n var newRowObjs = [];\n var oldIndexes = {};\n var oldRowObjs = gObj.getRowsObject().slice();\n var batchChangeKeys = this.getBatchEditedRecords(key, oldRowObjs);\n var newIndexes = {};\n var hasBatch = Object.keys(batchChangeKeys).length !== 0;\n if (gObj.getContent().querySelector('.e-emptyrow') || args.requestType === 'reorder'\n || this.parent.groupSettings.columns.length) {\n this.refreshContentRows(args);\n }\n else {\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var oldRowElements = {};\n var tbody = gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var dataSource = gObj.currentViewData;\n var trs = [].slice.call(this.getTable().querySelector(literals.tbody).children);\n if (this.prevCurrentView.length) {\n var prevLen = this.prevCurrentView.length;\n var currentLen = dataSource.length;\n if (prevLen === currentLen) {\n for (var i = 0; i < currentLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n else {\n for (var i = 0; i < currentLen; i++) {\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n }\n for (var i = 0; i < prevLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n }\n for (var i = 0; i < dataSource.length; i++) {\n var oldIndex = oldKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]];\n if (!isNullOrUndefined(oldIndex)) {\n var isEqual = false;\n if (this.parent.enableDeepCompare) {\n isEqual = this.objectEqualityChecker(this.prevCurrentView[parseInt(oldIndex.toString(), 10)], dataSource[parseInt(i.toString(), 10)]);\n }\n var tr = oldRowElements[oldRowObjs[parseInt(oldIndex.toString(), 10)]\n .uid];\n newRowObjs.push(oldRowObjs[parseInt(oldIndex.toString(), 10)]);\n if (this.rowElements[parseInt(oldIndex.toString(), 10)] && this.rowElements[parseInt(oldIndex.toString(), 10)].getAttribute('data-uid') === newRowObjs[parseInt(i.toString(), 10)].uid\n && ((hasBatch && isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!hasBatch && (isEqual\n || this.prevCurrentView[parseInt(oldIndex.toString(), 10)] === dataSource[parseInt(i.toString(), 10)])))) {\n if (oldIndex !== i) {\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n continue;\n }\n if ((hasBatch && !isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!this.parent.enableDeepCompare\n && dataSource[parseInt(i.toString(), 10)] !== this.prevCurrentView[parseInt(oldIndex.toString(), 10)])\n || (this.parent.enableDeepCompare && !isEqual)) {\n oldRowObjs[parseInt(oldIndex.toString(), 10)].setRowValue(dataSource[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n else {\n var row = new RowRenderer(this.serviceLocator, null, gObj);\n var args_1 = { startIndex: i };\n var modelData = this.generator.generateRows([dataSource[parseInt(i.toString(), 10)]], args_1);\n newRowObjs.push(modelData[0]);\n var tr = row.render(modelData[0], gObj.getColumns());\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n }\n this.rows = newRowObjs;\n this.rowElements = [].slice.call(tbody.children);\n remove(this.getTable().querySelector(literals.tbody));\n this.getTable().appendChild(tbody);\n this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n this.parent.notify(action, args);\n }\n }\n };\n ContentRender.prototype.objectEqualityChecker = function (old, next) {\n var keys = Object.keys(old);\n var isEqual = true;\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[parseInt(i.toString(), 10)]] !== next[keys[parseInt(i.toString(), 10)]]) {\n var isDate = old[keys[parseInt(i.toString(), 10)]] instanceof Date\n && next[keys[parseInt(i.toString(), 10)]] instanceof Date;\n if (!isDate || (old[keys[parseInt(i.toString(), 10)]]\n .getTime() !== next[keys[parseInt(i.toString(), 10)]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n };\n ContentRender.prototype.getBatchEditedRecords = function (primaryKey, rows) {\n var keys = {};\n var changes = this.parent.getBatchChanges();\n var changedRecords = [];\n var addedRecords = [];\n if (Object.keys(changes).length) {\n changedRecords = changes.changedRecords;\n addedRecords = changes.addedRecords;\n }\n var args = { cancel: false };\n this.parent.notify(events.immutableBatchCancel, { rows: rows, args: args });\n if (addedRecords.length) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n rows.splice(rows.length - 1, addedRecords.length);\n }\n else {\n if (!args.cancel) {\n rows.splice(0, addedRecords.length);\n }\n }\n }\n for (var i = 0; i < changedRecords.length; i++) {\n keys[changedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey]] = i;\n }\n return keys;\n };\n ContentRender.prototype.refreshImmutableContent = function (index, tr, row) {\n row.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n if (row.isAltRow) {\n tr.classList.add('e-altrow');\n }\n else {\n tr.classList.remove('e-altrow');\n }\n row.index = index;\n row.edit = undefined;\n row.isDirty = false;\n tr.setAttribute(literals.dataRowIndex, index.toString());\n tr.setAttribute(literals.ariaRowIndex, (index + 1).toString());\n this.updateCellIndex(tr, index);\n };\n ContentRender.prototype.updateCellIndex = function (rowEle, index) {\n for (var i = 0; i < rowEle.cells.length; i++) {\n rowEle.cells[parseInt(i.toString(), 10)].setAttribute('index', index.toString());\n }\n };\n return ContentRender;\n}());\nexport { ContentRender };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, closest as getClosest, remove } from '@syncfusion/ej2-base';\nimport { classList } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowRenderer } from './row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport * as events from '../base/constant';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, wrap, measureColumnDepth, appendChildren } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar HeaderRender = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function HeaderRender(parent, serviceLocator) {\n var _this = this;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n this.isFirstCol = false;\n this.isReplaceDragEle = true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n var parentEle = parentsUntil(target, 'e-headercell');\n if (!(gObj.allowReordering || gObj.allowGrouping) || (!isNullOrUndefined(parentEle)\n && parentEle.getElementsByClassName('e-checkselectall').length > 0)) {\n return false;\n }\n var visualElement = _this.parent.createElement('div', { className: 'e-cloneproperties e-dragclone e-headerclone' });\n var element = target.classList.contains('e-headercell') ? target : parentEle;\n if (!element || (!gObj.allowReordering && element.classList.contains('e-stackedheadercell'))) {\n return false;\n }\n var height = element.offsetHeight;\n var headercelldiv = element.querySelector('.e-headercelldiv') || element.querySelector('.e-stackedheadercelldiv');\n var col;\n if (headercelldiv) {\n if (element.querySelector('.e-stackedheadercelldiv')) {\n col = gObj.getStackedHeaderColumnByHeaderText(headercelldiv.innerText.trim(), gObj.columns);\n }\n else {\n col = gObj.getColumnByUid(headercelldiv.getAttribute('e-mappinguid'));\n }\n _this.column = col;\n if (_this.column.lockColumn) {\n return false;\n }\n visualElement.setAttribute('e-mappinguid', _this.column.uid);\n }\n if (col && !isNullOrUndefined(col.headerTemplate)) {\n if (!isNullOrUndefined(col.headerTemplate)) {\n var colIndex = gObj.getColumnIndexByField(col.field);\n var result = col.getHeaderTemplate()(extend({ 'index': colIndex }, col), gObj, 'headerTemplate');\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\n }\n }\n else {\n visualElement.innerHTML = headercelldiv ?\n col.headerText : element.firstElementChild.innerHTML;\n }\n visualElement.style.width = element.offsetWidth + 'px';\n visualElement.style.height = element.offsetHeight + 'px';\n visualElement.style.lineHeight = (height - 6).toString() + 'px';\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n gObj.notify(events.columnDragStart, { target: _this.draggable.currentStateTarget, column: _this.column, event: e.event });\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n var target = e.target;\n if (target) {\n var closest = getClosest(target, '.e-grid');\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (!closest || closest.getAttribute('id') !== gObj.element.getAttribute('id')) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n if (gObj.allowReordering) {\n gObj.element.querySelector('.e-reorderuparrow').style.display = 'none';\n gObj.element.querySelector('.e-reorderdownarrow').style.display = 'none';\n }\n if (!gObj.groupSettings.allowReordering) {\n return;\n }\n }\n gObj.notify(events.columnDrag, { target: e.target, column: _this.column, event: e.event });\n }\n };\n this.dragStop = function (e) {\n var gObj = _this.parent;\n var cancel;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n if ((!parentsUntil(e.target, 'e-headercell') && !parentsUntil(e.target, 'e-groupdroparea')) ||\n (!gObj.allowReordering && parentsUntil(e.target, 'e-headercell')) ||\n (!e.helper.getAttribute('e-mappinguid') && parentsUntil(e.target, 'e-groupdroparea'))) {\n remove(e.helper);\n cancel = true;\n }\n gObj.notify(events.columnDragStop, { target: e.target, event: e.event, column: _this.column, cancel: cancel });\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var uid = e.droppedElement.getAttribute('e-mappinguid');\n var closest = getClosest(e.target, '.e-grid');\n remove(e.droppedElement);\n if (closest && closest.getAttribute('id') !== gObj.element.getAttribute('id') ||\n !(gObj.allowReordering || gObj.allowGrouping)) {\n return;\n }\n gObj.notify(events.headerDrop, { target: e.target, uid: uid, droppedElement: e.droppedElement });\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.widthService = this.serviceLocator.getService('widthService');\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization\n && !this.parent.getFrozenLeftColumnsCount() && !this.parent.getFrozenRightColumnsCount()) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.columnPositionChanged, this.colPosRefresh, this);\n this.parent.on(events.initialEnd, this.renderCustomToolbar, this);\n if (this.parent.rowRenderingMode === 'Vertical') {\n this.parent.on(events.uiUpdate, this.updateCustomResponsiveToolbar, this);\n }\n }\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderPanel = function () {\n var div = this.parent.element.querySelector('.' + literals.gridHeader);\n var isRendered = (div != null);\n div = isRendered ? div : this.parent.createElement('div', { className: 'e-gridheader' });\n var innerDiv = isRendered ? div.querySelector('.' + literals.headerContent) :\n this.parent.createElement('div', { className: literals.headerContent });\n this.toggleStackClass(div);\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (!isRendered) {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderTable = function () {\n var headerDiv = this.getPanel();\n headerDiv.appendChild(this.createHeaderTable());\n this.setTable(headerDiv.querySelector('.' + literals.table));\n if (!this.parent.getFrozenColumns() && !this.parent.getFrozenRightColumnsCount() && !this.parent.getFrozenLeftColumnsCount()) {\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: this.parent.isFrozenGrid() } });\n };\n /**\n * Get the header content div element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getPanel = function () {\n return this.headerPanel;\n };\n /**\n * Set the header content div element of grid\n *\n * @param {Element} panel - specifies the panel element\n * @returns {void}\n */\n HeaderRender.prototype.setPanel = function (panel) {\n this.headerPanel = panel;\n };\n /**\n * Get the header table element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getTable = function () {\n return this.headerTable;\n };\n /**\n * Set the header table element of grid\n *\n * @param {Element} table - specifies the table element\n * @returns {void}\n */\n HeaderRender.prototype.setTable = function (table) {\n this.headerTable = table;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.setColGroup = function (colGroup) {\n return this.colgroup = colGroup;\n };\n /**\n * Get the header row element collection.\n *\n * @returns {Element[]} returns the element\n */\n HeaderRender.prototype.getRows = function () {\n var table = this.getTable();\n return table.tHead.rows;\n };\n /**\n * The function is used to create header table elements\n *\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createHeaderTable = function () {\n var table = this.createTable();\n var innerDiv = this.getPanel().querySelector('.' + literals.headerContent);\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * The function is used to create header table elements\n *\n * @param {Element} tableEle - specifies the table Element\n * @param {freezeTable} tableName - specifies the table name\n * @returns {Element} returns the element\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.createHeader = function (tableEle, tableName) {\n if (tableEle === void 0) { tableEle = null; }\n var gObj = this.parent;\n var isFrozen = gObj.isFrozenGrid();\n if (this.getTable() && !isFrozen) {\n remove(this.getTable());\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '0.25px', role: 'grid' } });\n var tblName = tableName ? tableName : gObj.getFrozenLeftCount() ? 'frozen-left' : 'frozen-right';\n var findHeaderRow = this.createHeaderContent(tblName);\n var thead = findHeaderRow.thead;\n var tbody = this.parent.createElement(literals.tbody, { className: this.parent.frozenRows ? '' : 'e-hide', attrs: { role: 'rowgroup' } });\n this.caption = this.parent.createElement('caption', { innerHTML: this.parent.element.id + '_header_table', className: 'e-hide' });\n var colGroup = this.parent.createElement(literals.colGroup);\n var rowBody = this.parent.createElement('tr');\n var bodyCell;\n var rows = this.rows = findHeaderRow.rows;\n for (var i = 0, len = rows.length; i < len; i++) {\n for (var j = 0, len_1 = rows[parseInt(i.toString(), 10)].cells.length; j < len_1; j++) {\n bodyCell = this.parent.createElement('td');\n rowBody.appendChild(bodyCell);\n }\n }\n if (gObj.allowFiltering || gObj.allowSorting || gObj.allowGrouping) {\n table.classList.add('e-sortfilter');\n }\n if (isFrozen && gObj.allowResizing) {\n var movableContent = this.parent.getContent().querySelector('.' + literals.movableContent).querySelector('.' + literals.table);\n if (tableName === 'movable' && !isNullOrUndefined(movableContent)) {\n table.style.width = movableContent.style.width;\n }\n }\n this.updateColGroup(colGroup);\n tbody.appendChild(rowBody);\n table.appendChild(this.setColGroup(colGroup));\n table.appendChild(thead);\n table.appendChild(tbody);\n table.appendChild(this.caption);\n this.ariaService.setOptions(table, { colcount: gObj.getColumns().length.toString() });\n return table;\n };\n /**\n * @param {Element} tableEle - specifies the column\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createTable = function (tableEle) {\n if (tableEle === void 0) { tableEle = null; }\n return this.createHeader(tableEle);\n };\n HeaderRender.prototype.createHeaderContent = function (tableName) {\n var gObj = this.parent;\n var index = 1;\n var frozenMode = gObj.getFrozenMode();\n var columns = gObj.getColumns();\n var thead = this.parent.createElement('thead', { attrs: { 'role': 'rowgroup' } });\n var colHeader = this.parent.createElement('tr', { className: 'e-columnheader' });\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, gObj);\n rowRenderer.element = colHeader;\n var rows = [];\n var headerRow;\n this.colDepth = measureColumnDepth(gObj.columns);\n for (var i = 0, len = this.colDepth; i < len; i++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(i);\n rows[parseInt(i.toString(), 10)].cells = [];\n }\n if (frozenMode !== 'Right') {\n rows = this.ensureColumns(rows);\n }\n rows = this.getHeaderCells(rows, tableName);\n if (frozenMode === 'Right') {\n index = 0;\n rows = this.ensureColumns(rows);\n }\n var frzCols = this.parent.getFrozenColumns();\n if (this.parent.isRowDragable() && this.parent.isFrozenGrid() && rows[0].cells[parseInt(index.toString(), 10)]) {\n var colFreezeMode = rows[0].cells[parseInt(index.toString(), 10)].column.getFreezeTableName();\n if (tableName === 'movable' && this.getStackedLockColsCount.length) {\n for (var j = 0, len = rows.length; j < len; j++) {\n if (frozenMode === 'Right') {\n rows[parseInt(j.toString(), 10)].cells.pop();\n }\n else {\n rows[parseInt(j.toString(), 10)].cells.shift();\n }\n }\n }\n else if ((colFreezeMode === 'movable' || (frozenMode === literals.leftRight &&\n colFreezeMode === literals.frozenRight))) {\n if (frozenMode === 'Right') {\n rows[0].cells.pop();\n }\n else {\n rows[0].cells.shift();\n }\n }\n else if (!frzCols && colFreezeMode === literals.frozenLeft) {\n rows[0].cells[0].column.freeze = colFreezeMode === literals.frozenLeft ? 'Left' : 'Right';\n }\n else if (frozenMode === 'Right' && colFreezeMode === literals.frozenRight) {\n rows[0].cells[rows[0].cells.length - 1].column.freeze = 'Right';\n }\n }\n for (var i = 0, len = this.colDepth; i < len; i++) {\n headerRow = rowRenderer.render(rows[parseInt(i.toString(), 10)], columns);\n if (this.parent.rowHeight && headerRow.querySelector('.e-headercell')) {\n headerRow.style.height = this.parent.rowHeight + 'px';\n }\n thead.appendChild(headerRow);\n }\n var findHeaderRow = {\n thead: thead,\n rows: rows\n };\n return findHeaderRow;\n };\n HeaderRender.prototype.updateColGroup = function (colGroup) {\n var cols = this.parent.getColumns();\n var col;\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n cols = extend([], this.parent.getColumns());\n cols.splice(0, this.parent.getFrozenColumns());\n }\n colGroup.id = this.parent.element.id + literals.colGroup;\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n continue;\n }\n col = this.parent.createElement('col', { className: 'e-group-intent' });\n colGroup.appendChild(col);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n col = this.parent.createElement('col', { className: 'e-detail-intent' });\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n col = this.parent.createElement('col');\n if (cols[parseInt(i.toString(), 10)].visible === false) {\n setStyleAttribute(col, { 'display': 'none' });\n }\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n return colGroup;\n };\n HeaderRender.prototype.ensureColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gObj = this.parent;\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gObj.allowGrouping) {\n for (var c = 0, len_2 = gObj.groupSettings.columns.length; c < len_2; c++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(c) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (gObj.detailTemplate || gObj.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell(args, CellType.DetailHeader));\n }\n if (gObj.isRowDragable()) {\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n return rows;\n };\n HeaderRender.prototype.getHeaderCells = function (rows, tableName) {\n var thead = this.parent.getHeaderTable() && this.parent.getHeaderTable().querySelector('thead');\n var cols = this.parent.enableColumnVirtualization ?\n this.parent.getColumns(this.parent.enablePersistence) : this.parent.columns;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n if (this.parent.lockcolPositionCount) {\n for (var i = 0; i < cols.length; i++) {\n this.lockColsRendered = false;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (cols.length - 1), thead, tableName, false);\n }\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.notfrzIdx = 0;\n this.lockColsRendered = true;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (len - 1), thead, tableName, false);\n }\n return rows;\n };\n HeaderRender.prototype.appendCells = function (cols, rows, index, isFirstObj, isFirstCol, isLastCol, isMovable, tableName, isStackLastCol) {\n var lastCol = isLastCol ? isStackLastCol ? 'e-laststackcell' : 'e-lastcell' : '';\n var isFrozen = this.parent.isFrozenGrid();\n var isLockColumn = !this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered);\n var isFrozenLockColumn = !this.parent.lockcolPositionCount || (cols.lockColumn && !this.lockColsRendered)\n || (!cols.lockColumn && this.lockColsRendered);\n var scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var left;\n if (isFrozen && scrollbar && this.parent.enableColumnVirtualization) {\n left = scrollbar.scrollLeft;\n }\n if (!cols.columns) {\n if (left && left > 0 && this.parent.contentModule.isXaxis()\n && this.parent.inViewIndexes[0] !== 0 && cols.getFreezeTableName() === 'movable') {\n rows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n else {\n if ((!isFrozen && isLockColumn) || (isFrozen && cols.getFreezeTableName() === tableName && isFrozenLockColumn)) {\n rows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n }\n if (this.parent.lockcolPositionCount) {\n if ((this.frzIdx + this.notfrzIdx < this.parent.frozenColumns) &&\n ((cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered))) {\n this.frzIdx++;\n }\n else {\n this.notfrzIdx++;\n }\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.isFirstCol = false;\n var colSpan = this.getCellCnt(cols, 0);\n if (colSpan) {\n var stackedLockColsCount = this.getStackedLockColsCount(cols, 0);\n var isStackedLockColumn = this.parent.lockcolPositionCount === 0\n || (!this.lockColsRendered && stackedLockColsCount !== 0)\n || (this.lockColsRendered && (colSpan - stackedLockColsCount) !== 0);\n var isFrozenStack = isFrozen && this.ensureStackedFrozen(cols.columns, tableName, false);\n if ((!isFrozen && isStackedLockColumn) || isFrozenStack) {\n rows[parseInt(index.toString(), 10)].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, stackedLockColsCount, cols.columns, tableName, isFrozen),\n className: isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')\n }));\n }\n }\n if (this.parent.lockcolPositionCount && !this.lockColsRendered) {\n for (var i = 0; i < cols.columns.length; i++) {\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, i === 0, i === (cols.columns.length - 1) && isLastCol, isMovable, tableName, false);\n }\n }\n if (this.lockColsRendered) {\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n isFirstObj = isFirstObj && i === 0;\n var isFirstCol_1 = this.isFirstCol = cols.columns[parseInt(i.toString(), 10)].visible\n && !isFirstObj;\n var isLaststackedCol = i === (len - 1) && isLastCol;\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, isFirstCol_1 && !isLaststackedCol, isLaststackedCol, isMovable, tableName, true);\n }\n }\n }\n return rows;\n };\n HeaderRender.prototype.ensureStackedFrozen = function (columns, tableName, isTrue) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n isTrue = this.ensureStackedFrozen(columns[parseInt(i.toString(), 10)].columns, tableName, isTrue);\n }\n else if (columns[parseInt(i.toString(), 10)].getFreezeTableName() === tableName) {\n isTrue = true;\n break;\n }\n }\n return isTrue;\n };\n HeaderRender.prototype.getStackedLockColsCount = function (col, lockColsCount) {\n if (col.columns) {\n for (var i = 0; i < col.columns.length; i++) {\n lockColsCount = this.getStackedLockColsCount(col.columns[parseInt(i.toString(), 10)], lockColsCount);\n }\n }\n else if (col.lockColumn) {\n lockColsCount++;\n }\n return lockColsCount;\n };\n HeaderRender.prototype.getColSpan = function (colSpan, stackedLockColsCount, columns, tableName, isFrozen) {\n if (isFrozen) {\n colSpan = this.getFrozenColSpan(columns, tableName, 0);\n }\n else if (this.parent.lockcolPositionCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n }\n return colSpan;\n };\n HeaderRender.prototype.getFrozenColSpan = function (columns, tableName, count) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n count = this.getFrozenColSpan(columns[parseInt(i.toString(), 10)].columns, tableName, count);\n }\n else if (columns[parseInt(i.toString(), 10)].getFreezeTableName() === tableName\n && columns[parseInt(i.toString(), 10)].visible) {\n count++;\n }\n }\n return count;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.generateRow = function (index) {\n return new Row({});\n };\n HeaderRender.prototype.generateCell = function (column, cellType, rowSpan, className, rowIndex, colIndex) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'isTemplate': !isNullOrUndefined(column.headerTemplate),\n 'rowID': '',\n 'column': column,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'className': className,\n 'index': rowIndex,\n 'colIndex': colIndex\n };\n if (!opt.rowSpan || opt.rowSpan < 2) {\n delete opt.rowSpan;\n }\n return new Cell(opt);\n };\n /**\n * Function to hide header table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n HeaderRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n var frzCols = gObj.getFrozenColumns();\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n if (frzCols) {\n var normalizedfrzCols = this.parent.isRowDragable() ? frzCols + 1 : frzCols;\n if (idx < normalizedfrzCols) {\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n else {\n var mTblColGrp = gObj.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.colGroup);\n setStyleAttribute(mTblColGrp.children[idx - normalizedfrzCols], { 'display': displayVal });\n }\n }\n else {\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n }\n this.refreshUI();\n };\n HeaderRender.prototype.colPosRefresh = function () {\n this.refreshUI();\n };\n /**\n * Refresh the header of the Grid.\n *\n * @returns {void}\n */\n HeaderRender.prototype.refreshUI = function () {\n var frzCols = this.parent.isFrozenGrid();\n var isVFTable = this.parent.enableColumnVirtualization && frzCols;\n var headerDiv = this.getPanel();\n this.toggleStackClass(headerDiv);\n var table = this.freezeReorder ? this.headerPanel.querySelector('.' + literals.movableHeader).querySelector('.' + literals.table)\n : this.getTable();\n var tableName = this.parent.isFrozenGrid() ? this.parent.getFrozenLeftCount() ? 'frozen-left'\n : 'frozen-right' : undefined;\n if (isVFTable) {\n table = this.parent.contentModule.getVirtualFreezeHeader();\n tableName = this.parent.contentModule.isXaxis() ? 'movable' : tableName;\n }\n if (table) {\n remove(table);\n table.removeChild(table.firstChild);\n table.removeChild(table.childNodes[0]);\n var colGroup = this.parent.createElement(literals.colGroup);\n var findHeaderRow = this.createHeaderContent(tableName);\n this.rows = findHeaderRow.rows;\n table.insertBefore(findHeaderRow.thead, table.firstChild);\n this.updateColGroup(colGroup);\n table.insertBefore(this.setColGroup(colGroup), table.firstChild);\n if (!isVFTable) {\n this.setTable(table);\n }\n this.appendContent(table);\n this.parent.notify(events.colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n if (!frzCols || (this.parent.enableColumnVirtualization && frzCols)) {\n this.initializeHeaderDrag();\n }\n var rows = [].slice.call(headerDiv.querySelectorAll('tr.e-columnheader'));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n var gCells = [].slice.call(row.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: frzCols } });\n if (this.parent.enableColumnVirtualization && parentsUntil(table, literals.movableHeader)) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false, isXaxis: true } });\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap(rows, true);\n }\n }\n };\n HeaderRender.prototype.toggleStackClass = function (div) {\n var column = this.parent.columns;\n var stackedHdr = column.some(function (column) { return !isNullOrUndefined(column.columns); });\n if (stackedHdr) {\n div.classList.add('e-stackedheader');\n }\n else {\n div.classList.remove('e-stackedheader');\n }\n };\n HeaderRender.prototype.appendContent = function (table) {\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(table);\n };\n HeaderRender.prototype.getCellCnt = function (col, cnt) {\n if (col.columns) {\n for (var i = 0, len = col.columns.length; i < len; i++) {\n cnt = this.getCellCnt(col.columns[parseInt(i.toString(), 10)], cnt);\n }\n }\n else {\n if (col.visible) {\n cnt++;\n }\n }\n return cnt;\n };\n HeaderRender.prototype.initializeHeaderDrag = function () {\n var gObj = this.parent;\n if (!(this.parent.allowReordering || (this.parent.allowGrouping && this.parent.groupSettings.showDropArea))) {\n return;\n }\n this.draggable = new Draggable(gObj.getHeaderContent(), {\n dragTarget: '.e-headercell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n abort: '.e-rhandler',\n isReplaceDragEle: this.isReplaceDragEle\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.initializeHeaderDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.getHeaderContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n if (this.draggable && !this.draggable.isDestroyed) {\n this.draggable.destroy();\n }\n };\n HeaderRender.prototype.renderCustomToolbar = function () {\n var _this = this;\n var gObj = this.parent;\n if (gObj.rowRenderingMode === 'Vertical' && !gObj.toolbar\n && (gObj.allowSorting || (gObj.allowFiltering && gObj.filterSettings.type !== 'FilterBar'))) {\n var div = gObj.createElement('div', { className: 'e-res-toolbar e-toolbar' });\n var toolbarItems = gObj.createElement('div', { className: 'e-toolbar-items' });\n var toolbarLeft = gObj.createElement('div', { className: 'e-toolbar-left' });\n var count = this.parent.allowFiltering && this.parent.allowSorting ? 2 : 1;\n for (var i = 0; i < count; i++) {\n var toolbarItem = gObj.createElement('div', { className: 'e-toolbar-item e-gridresponsiveicons e-icons e-tbtn-align' });\n var cls = count === 1 ? this.parent.allowSorting ? 'sort'\n : 'filter' : i === 1 ? 'sort' : 'filter';\n var button = gObj.createElement('button', { className: 'e-tbar-btn e-control e-btn e-lib e-icon-btn' });\n var span = gObj.createElement('span', { className: 'e-btn-icon e-res' + cls + '-icon e-icons' });\n button.appendChild(span);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n btnObj.appendTo(button);\n button.onclick = function (e) {\n if (e.target.classList.contains('e-ressort-btn')\n || e.target.classList.contains('e-ressort-icon')) {\n _this.parent.showResponsiveCustomSort();\n }\n else {\n _this.parent.showResponsiveCustomFilter();\n }\n };\n toolbarItem.appendChild(button);\n toolbarLeft.appendChild(toolbarItem);\n }\n toolbarItems.appendChild(toolbarLeft);\n div.appendChild(toolbarItems);\n gObj.element.insertBefore(div, this.parent.element.querySelector('.' + literals.gridHeader));\n }\n else {\n if (gObj.enableAdaptiveUI && !gObj.toolbar) {\n gObj.getContent().classList.add('e-responsive-header');\n }\n }\n };\n HeaderRender.prototype.updateCustomResponsiveToolbar = function (args) {\n var resToolbar = this.parent.element.querySelector('.e-responsive-toolbar');\n if (args.module === 'toolbar') {\n if (resToolbar) {\n remove(resToolbar);\n }\n else {\n this.renderCustomToolbar();\n }\n }\n };\n return HeaderRender;\n}());\nexport { HeaderRender };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend, addClass } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { setStyleAndAttributes, appendChildren } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\nimport { AriaService } from '../services/aria-service';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { headerCellInfo } from '../base/constant';\n/**\n * HeaderCellRenderer class which responsible for building header cell content.\n *\n * @hidden\n */\nvar HeaderCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderCellRenderer, _super);\n function HeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TH', { className: 'e-headercell', attrs: { tabindex: '-1' } });\n _this.ariaService = new AriaService();\n _this.hTxtEle = _this.parent.createElement('span', { className: 'e-headertext' });\n _this.sortEle = _this.parent.createElement('div', { className: 'e-sortfilterdiv e-icons', attrs: { 'aria-hidden': 'true' } });\n _this.gui = _this.parent.createElement('div');\n _this.chkAllBox = _this.parent.createElement('input', { className: 'e-checkselectall', attrs: { 'type': 'checkbox', 'aria-label': _this.localizer.getConstant('CheckBoxLabel') } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string | Element} returns the element\n */\n HeaderCellRenderer.prototype.getGui = function () {\n return this.gui.cloneNode();\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the column\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the aattributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Element} node - specifies the noe\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.refresh = function (cell, node) {\n this.clean(node);\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n HeaderCellRenderer.prototype.clean = function (node) {\n node.innerHTML = '';\n };\n /* tslint:disable-next-line:max-func-body-length */\n HeaderCellRenderer.prototype.prepareHeader = function (cell, node, fltrMenuEle) {\n var column = cell.column;\n var ariaAttr = {};\n var elementDesc = '';\n //Prepare innerHtml\n var innerDIV = this.getGui();\n var hValueAccer;\n attributes(innerDIV, {\n 'e-mappinguid': column.uid,\n 'class': 'e-headercelldiv'\n });\n if (!isNullOrUndefined(column.headerValueAccessor)) {\n hValueAccer = this.getValue(column.headerText, column);\n }\n if (column.type !== 'checkbox') {\n var value = column.headerText;\n if (!isNullOrUndefined(hValueAccer)) {\n value = hValueAccer;\n }\n var headerText = this.hTxtEle.cloneNode();\n headerText[column.getDomSetter()] = this.parent.sanitize(value);\n innerDIV.appendChild(headerText);\n }\n else {\n column.editType = 'booleanedit';\n var checkAllWrap = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.chkAllBox.id = 'checkbox-' + column.uid;\n checkAllWrap.insertBefore(this.chkAllBox.cloneNode(), checkAllWrap.firstChild);\n if (this.parent.cssClass) {\n addClass([checkAllWrap], [this.parent.cssClass]);\n }\n innerDIV.appendChild(checkAllWrap);\n innerDIV.classList.add('e-headerchkcelldiv');\n }\n this.buildAttributeFromCell(node, cell);\n this.appendHtml(node, innerDIV);\n node.appendChild(this.sortEle.cloneNode());\n if ((this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') &&\n (column.allowFiltering && !isNullOrUndefined(column.field)) &&\n !(this.parent.showColumnMenu && column.showColumnMenu)) {\n attributes(fltrMenuEle, {\n 'e-mappinguid': 'e-flmenu-' + column.uid\n });\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('FilterDescription') : this.localizer.getConstant('FilterDescription');\n node.classList.add('e-fltr-icon');\n var matchFlColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFlColumns.length) {\n var foreignColumn = this.parent.getForeignKeyColumns();\n for (var index = 0; index < this.parent.columns.length; index++) {\n for (var count = 0; count < this.parent.filterSettings.columns.length; count++) {\n if (this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field === column.field\n || (foreignColumn.length\n && column.foreignKeyValue === this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field)) {\n fltrMenuEle.classList.add('e-filtered');\n matchFlColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.appendChild(fltrMenuEle.cloneNode());\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.allowSorting && column.allowSorting) {\n ariaAttr.sort = 'none';\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('SortDescription') : this.localizer.getConstant('SortDescription');\n }\n if ((this.parent.allowGrouping && column.allowGrouping) || this.parent.allowReordering && column.allowReordering) {\n ariaAttr.grabbed = false;\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('GroupDescription') : this.localizer.getConstant('GroupDescription');\n }\n if (this.parent.showColumnMenu) {\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('ColumnMenuDescription') : this.localizer.getConstant('ColumnMenuDescription');\n }\n node = this.extendPrepareHeader(column, node);\n var result;\n var gridObj = this.parent;\n var colIndex = gridObj.getColumnIndexByField(column.field);\n if (!isNullOrUndefined(column.headerTemplate)) {\n //need to pass the template id for blazor headertemplate\n var headerTempID = gridObj.element.id + column.uid + 'headerTemplate';\n var str = 'isStringTemplate';\n var col = column;\n var isReactCompiler = this.parent.isReact && typeof (column.headerTemplate) !== 'string';\n var isReactChild_1 = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild_1) {\n var copied = { 'index': colIndex };\n node.firstElementChild.innerHTML = '';\n column.getHeaderTemplate()(extend(copied, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n result = column.getHeaderTemplate()(extend({ 'index': colIndex }, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n node.firstElementChild.innerHTML = '';\n appendChildren(node.firstElementChild, result);\n }\n }\n this.ariaService.setOptions(node, ariaAttr);\n if (!isNullOrUndefined(column.headerTextAlign) || !isNullOrUndefined(column.textAlign)) {\n var alignment = column.headerTextAlign || column.textAlign;\n innerDIV.style.textAlign = alignment;\n if (alignment === 'Right' || alignment === 'Left') {\n node.classList.add(alignment === 'Right' ? 'e-rightalign' : 'e-leftalign');\n }\n else if (alignment === 'Center') {\n node.classList.add('e-centeralign');\n }\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if ((column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip'))\n && !(gridObj.allowTextWrap && (gridObj.textWrapSettings.wrapMode === 'Header'\n || gridObj.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n if (elementDesc) {\n node.setAttribute('aria-description', elementDesc);\n }\n node.setAttribute('aria-rowspan', (!isNullOrUndefined(cell.rowSpan) ? cell.rowSpan : 1).toString());\n node.setAttribute('aria-colspan', '1');\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (((this.parent.isReact && this.parent.requireTemplateRef)\n || (isReactChild && this.parent.parentDetails.parentInstObj.requireTemplateRef))\n && !isNullOrUndefined(column.headerTemplate)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(headerCellInfo, { cell: cell, node: node });\n });\n }\n else {\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n }\n return node;\n };\n HeaderCellRenderer.prototype.getValue = function (field, column) {\n return column.headerValueAccessor(field, column);\n };\n HeaderCellRenderer.prototype.extendPrepareHeader = function (column, node) {\n if (this.parent.showColumnMenu && column.showColumnMenu && !isNullOrUndefined(column.field)) {\n var element = (this.parent.createElement('div', { className: 'e-icons e-columnmenu', attrs: { 'aria-hidden': 'true' } }));\n var matchFilteredColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFilteredColumns.length) {\n for (var i = 0; i < this.parent.columns.length; i++) {\n for (var j = 0; j < this.parent.filterSettings.columns.length; j++) {\n if (this.parent.filterSettings.columns[parseInt(j.toString(), 10)].field === column.field) {\n element.classList.add('e-filtered');\n matchFilteredColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.classList.add('e-fltr-icon');\n node.appendChild(element);\n }\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHtml\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n return HeaderCellRenderer;\n}(CellRenderer));\nexport { HeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { headerCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, appendChildren } from '../base/util';\n/**\n * StackedHeaderCellRenderer class which responsible for building stacked header cell content.\n *\n * @hidden\n */\nvar StackedHeaderCellRenderer = /** @class */ (function (_super) {\n __extends(StackedHeaderCellRenderer, _super);\n function StackedHeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', {\n className: 'e-headercell e-stackedheadercell', attrs: {\n tabindex: '-1'\n }\n });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n StackedHeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var div = this.parent.createElement('div', {\n className: 'e-stackedheadercelldiv',\n attrs: { 'e-mappinguid': cell.column.uid }\n });\n var column = cell.column;\n node.appendChild(div);\n if (!isNullOrUndefined(column.headerTemplate)) {\n appendChildren(div, column.getHeaderTemplate()(column, this.parent, 'headerTemplate'));\n }\n else {\n this.appendHtml(div, this.parent.sanitize(column.headerText), column.getDomSetter());\n }\n if (cell.column.toolTip) {\n node.setAttribute('title', cell.column.toolTip);\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n node.classList.add('e-ellipsistooltip');\n }\n if (!isNullOrUndefined(cell.column.textAlign)) {\n div.style.textAlign = cell.column.textAlign;\n }\n if (cell.column.customAttributes) {\n setStyleAndAttributes(node, cell.column.customAttributes);\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-colspan', cell.colSpan.toString());\n node.setAttribute('aria-rowspan', '1');\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = cell.column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n return node;\n };\n return StackedHeaderCellRenderer;\n}(CellRenderer));\nexport { StackedHeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { setStyleAndAttributes } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\n/**\n * IndentCellRenderer class which responsible for building group indent cell.\n *\n * @hidden\n */\nvar IndentCellRenderer = /** @class */ (function (_super) {\n __extends(IndentCellRenderer, _super);\n function IndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-indentcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n IndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n setStyleAndAttributes(node, cell.attributes);\n return node;\n };\n return IndentCellRenderer;\n}(CellRenderer));\nexport { IndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren, templateCompiler } from '../base/util';\n/**\n * GroupCaptionCellRenderer class which responsible for building group caption cell.\n *\n * @hidden\n */\nvar GroupCaptionCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionCellRenderer, _super);\n function GroupCaptionCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellUid = 0;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-groupcaption',\n attrs: { id: _this.parent.element.id + 'captioncell', tabindex: '-1' } });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the GroupedData\n * @returns {Element} returns the element\n */\n GroupCaptionCellRenderer.prototype.render = function (cell, data) {\n this.element.id = this.parent.element.id + 'captioncell' + this.cellUid++;\n var node = this.element.cloneNode();\n var gObj = this.parent;\n var column = cell.column;\n var domSetter = column.getDomSetter ? column.getDomSetter() : 'innerHTML';\n var result;\n var fKeyValue;\n var gTemplateValue;\n data.headerText = cell.column.headerText;\n if (cell.isForeignKey) {\n fKeyValue = this.format(cell.column, cell.column.valueAccessor('foreignKey', data, cell.column));\n }\n var value = cell.isForeignKey ? fKeyValue : cell.column.enableGroupByFormat ? data.key :\n this.format(cell.column, cell.column.valueAccessor('key', data, cell.column));\n for (var j = 0; j < gObj.aggregates.length; j++) {\n for (var i = 0; i < gObj.aggregates[parseInt(j.toString(), 10)].columns.length; i++) {\n if (gObj.getVisibleColumns()[0].field === gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .field && gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate) {\n if (gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate.includes('$')) {\n gTemplateValue = gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('$')[0] + data[gObj.getVisibleColumns()[0].field][gObj\n .aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].type] +\n gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate.split('}')[1];\n }\n else {\n gTemplateValue = gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)].groupCaptionTemplate;\n }\n break;\n }\n }\n }\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.groupSettings.captionTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n var tempID = gObj.element.id + 'captionTemplate';\n templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent, 'captionTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else if (this.parent.isVue) {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent);\n }\n else {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n }\n }\n else {\n if (gObj.groupSettings.enableLazyLoading) {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n else {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n ' - ' + data.count + ' ' + (data.count < 2 ? this.localizer.getConstant('Item') : this.localizer.getConstant('Items'))\n + (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-label', node.innerHTML + this.localizer.getConstant('GroupCaption'));\n node.setAttribute('title', node.textContent);\n return node;\n };\n return GroupCaptionCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionCellRenderer };\n/**\n * GroupCaptionEmptyCellRenderer class which responsible for building group caption empty cell.\n *\n * @hidden\n */\nvar GroupCaptionEmptyCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionEmptyCellRenderer, _super);\n function GroupCaptionEmptyCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-groupcaption' });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the Object\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {number} data.count - Defines the count\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n GroupCaptionEmptyCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.innerHTML = ' ';\n node.setAttribute('colspan', cell.colSpan.toString());\n return node;\n };\n return GroupCaptionEmptyCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionEmptyCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { IndentCellRenderer } from './indent-cell-renderer';\nimport { CellType } from '../base/enum';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar ExpandCellRenderer = /** @class */ (function (_super) {\n __extends(ExpandCellRenderer, _super);\n function ExpandCellRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Function to render the expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {Object} attr - specifies the attribute\n * @param {boolean} isExpand - specifies isexpand\n * @returns {Element} returns the element\n */\n ExpandCellRenderer.prototype.render = function (cell, data, attr, isExpand) {\n var node = this.element.cloneNode();\n node.setAttribute('ej-mappingname', data.field);\n node.setAttribute('ej-mappingvalue', data.key);\n node.setAttribute('aria-expanded', isExpand ? 'true' : 'false');\n node.setAttribute('tabindex', '-1');\n if (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache) {\n cell.cellType = CellType.Indent;\n node.className = isExpand ? 'e-recordplusexpand e-disablepointer' : 'e-recordpluscollapse e-disablepointer';\n }\n else {\n node.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n node.appendChild(this.parent.createElement('a', {\n className: isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' : 'e-icons e-gnextforward e-icon-grightarrow',\n attrs: { href: '#', 'title': isExpand ? 'expanded' : 'collapsed' }\n }));\n }\n return node;\n };\n return ExpandCellRenderer;\n}(IndentCellRenderer));\nexport { ExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * HeaderIndentCellRenderer class which responsible for building header indent cell.\n *\n * @hidden\n */\nvar HeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderIndentCellRenderer, _super);\n function HeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-grouptopleftcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-headercelldiv e-emptycell', innerHTML: '' }));\n return node;\n };\n return HeaderIndentCellRenderer;\n}(CellRenderer));\nexport { HeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar DetailHeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(DetailHeaderIndentCellRenderer, _super);\n function DetailHeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-detailheadercell' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DetailHeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return DetailHeaderIndentCellRenderer;\n}(CellRenderer));\nexport { DetailHeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar DetailExpandCellRenderer = /** @class */ (function (_super) {\n __extends(DetailExpandCellRenderer, _super);\n function DetailExpandCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-detailrowcollapse',\n attrs: { 'aria-expanded': 'false', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n DetailExpandCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n if (attributes && !isNullOrUndefined(attributes['class'])) {\n node.className = '';\n node.className = attributes['class'];\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonaldown e-icon-gdownarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Expanded')\n } }));\n }\n else {\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonalright e-icon-grightarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Collapsed')\n } }));\n }\n return node;\n };\n return DetailExpandCellRenderer;\n}(CellRenderer));\nexport { DetailExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar RowDragDropRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropRenderer, _super);\n function RowDragDropRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowdragdrop e-rowdragdropcell',\n attrs: { tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropRenderer.prototype.render = function (cell, data) {\n var nodeElement = this.element.cloneNode();\n nodeElement.appendChild(this.parent.createElement('div', {\n className: 'e-icons e-rowcelldrag e-dtdiagonalright e-icon-rowdragicon',\n attrs: { 'aria-hidden': 'true' }\n }));\n if (cell.isSelected) {\n nodeElement.classList.add('e-selectionbackground');\n nodeElement.classList.add('e-active');\n }\n return nodeElement;\n };\n return RowDragDropRenderer;\n}(CellRenderer));\nexport { RowDragDropRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { createElement } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar RowDragDropHeaderRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropHeaderRenderer, _super);\n function RowDragDropHeaderRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-rowdragheader' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropHeaderRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return RowDragDropHeaderRenderer;\n}(CellRenderer));\nexport { RowDragDropHeaderRenderer };\n","import { remove, resetBlazorTemplate, blazorTemplates, getValue } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, Predicate, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RenderType, CellType } from '../base/enum';\nimport { Data } from '../actions/data';\nimport { Column } from '../models/column';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport * as events from '../base/constant';\nimport { prepareColumns, setFormatter, isGroupAdaptive, getDatePredicate, getObject, clearReactVueTemplates } from '../base/util';\nimport { ContentRender } from '../renderer/content-renderer';\nimport { HeaderRender } from '../renderer/header-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\nimport { StackedHeaderCellRenderer } from '../renderer/stacked-cell-renderer';\nimport { IndentCellRenderer } from '../renderer/indent-cell-renderer';\nimport { GroupCaptionCellRenderer, GroupCaptionEmptyCellRenderer } from '../renderer/caption-cell-renderer';\nimport { ExpandCellRenderer } from '../renderer/expand-cell-renderer';\nimport { HeaderIndentCellRenderer } from '../renderer/header-indent-renderer';\nimport { DetailHeaderIndentCellRenderer } from '../renderer/detail-header-indent-renderer';\nimport { DetailExpandCellRenderer } from '../renderer/detail-expand-cell-renderer';\nimport { RowDragDropRenderer } from './row-drag-drop-renderer';\nimport { RowDragDropHeaderRenderer } from '../renderer/row-drag-header-indent-render';\nimport * as literals from '../base/string-literals';\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the serviceLocator\n */\n function Render(parent, locator) {\n this.emptyGrid = false;\n this.counter = 0;\n this.parent = parent;\n this.locator = locator;\n this.data = new Data(parent, locator);\n this.l10n = locator.getService('localization');\n this.ariaService = this.locator.getService('ariaService');\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize grid header, content and footer rendering\n *\n * @returns {void}\n */\n Render.prototype.render = function () {\n var gObj = this.parent;\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer.renderPanel();\n this.contentRenderer.renderPanel();\n if (gObj.getColumns().length) {\n this.isLayoutRendered = true;\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.emptyRow(false);\n }\n this.parent.scrollModule.setWidth();\n this.parent.scrollModule.setHeight();\n if (this.parent.height !== 'auto') {\n this.parent.scrollModule.setPadding();\n }\n this.refreshDataManager();\n };\n /**\n * Refresh the entire Grid.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n */\n Render.prototype.refresh = function (e) {\n var _this = this;\n if (e === void 0) { e = { requestType: 'refresh' }; }\n var gObj = this.parent;\n gObj.notify(e.requestType + \"-begin\", e);\n gObj.trigger(events.actionBegin, e, function (args) {\n if (args === void 0) { args = { requestType: 'refresh' }; }\n if (args.cancel) {\n gObj.notify(events.cancelBegin, args);\n return;\n }\n if (gObj.allowSelection && (args.action === 'clearFilter' || (args.requestType === 'searching' && args.searchString === '') ||\n args.action === 'add')) {\n gObj.selectionModule['rmtHdrChkbxClicked'] = false;\n }\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage &&\n (args.action === 'add' && args.requestType === 'save') && gObj.pagerModule.pagerObj.checkAll) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + 1 } }, true);\n }\n if (args.requestType === 'delete' && gObj.allowPaging) {\n var dataLength = args.data.length;\n var count = gObj.pageSettings.totalRecordsCount - dataLength;\n var currentViewData = gObj.getCurrentViewRecords().length;\n // eslint-disable-next-line max-len\n if (!(currentViewData - dataLength) && count && ((gObj.pageSettings.currentPage - 1) * gObj.pageSettings.pageSize) === count) {\n gObj.prevPageMoving = true;\n gObj.setProperties({\n pageSettings: {\n totalRecordsCount: count, currentPage: Math.ceil(count / gObj.pageSettings.pageSize)\n }\n }, true);\n gObj.pagerModule.pagerObj.totalRecordsCount = count;\n }\n }\n if (args.requestType === 'reorder' && _this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else if ((args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && _this.parent.groupSettings.enableLazyLoading && _this.parent.groupSettings.columns.length\n && (_this.parent.enableVirtualization ? _this.parent.lazyLoadRender :\n _this.parent.contentModule).getGroupCache()[_this.parent.pageSettings.currentPage]) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else {\n _this.refreshDataManager(args);\n }\n });\n };\n /**\n * @returns {void}\n * @hidden\n */\n Render.prototype.resetTemplates = function () {\n var gObj = this.parent;\n var gridColumns = gObj.getColumns();\n if (gObj.detailTemplate) {\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n blazorTemplates[\"\" + detailTemplateID] = [];\n resetBlazorTemplate(detailTemplateID, 'DetailTemplate');\n }\n if (gObj.groupSettings.captionTemplate) {\n resetBlazorTemplate(gObj.element.id + 'captionTemplate', 'CaptionTemplate');\n }\n if (gObj.rowTemplate) {\n resetBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate');\n }\n if (gObj.toolbarTemplate) {\n resetBlazorTemplate(gObj.element.id + 'toolbarTemplate', 'ToolbarTemplate');\n }\n if (gObj.pageSettings.template) {\n resetBlazorTemplate(gObj.element.id + '_template', 'pageSettings');\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (gridColumns[parseInt(i.toString(), 10)].template) {\n blazorTemplates[gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid] = [];\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid, 'Template');\n }\n if (gridColumns[parseInt(i.toString(), 10)].headerTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'headerTemplate', 'HeaderTemplate');\n }\n if (gridColumns[parseInt(i.toString(), 10)].filterTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'filterTemplate', 'FilterTemplate');\n }\n }\n var guid = 'guid';\n for (var k = 0; k < gObj.aggregates.length; k++) {\n for (var j = 0; j < gObj.aggregates[parseInt(k.toString(), 10)].columns.length; j++) {\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].footerTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'footerTemplate';\n resetBlazorTemplate(tempID, 'FooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupFooterTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupFooterTemplate';\n resetBlazorTemplate(tempID, 'GroupFooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupCaptionTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupCaptionTemplate';\n resetBlazorTemplate(tempID, 'GroupCaptionTemplate');\n }\n }\n }\n };\n Render.prototype.refreshComplete = function (e) {\n this.parent.trigger(events.actionComplete, e);\n };\n /**\n * The function is used to refresh the dataManager\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n Render.prototype.refreshDataManager = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n var maskRow = (gObj.loadingIndicator.indicatorType === 'Shimmer' && args.requestType !== 'virtualscroll'\n && args.requestType !== 'infiniteScroll') || ((args.requestType === 'virtualscroll' || args.requestType === 'infiniteScroll')\n && gObj.enableVirtualMaskRow);\n if (args.requestType !== 'virtualscroll' && !args.isCaptionCollapse && !maskRow) {\n this.parent.showSpinner();\n }\n if (maskRow) {\n gObj.showMaskRow(args.requestType === 'virtualscroll' ? args.virtualInfo.sentinelInfo.axis\n : args.requestType === 'infiniteScroll' ? args.direction : undefined);\n }\n this.parent.notify(events.resetInfiniteBlocks, args);\n this.emptyGrid = false;\n var dataManager;\n var isFActon = this.isNeedForeignAction();\n this.ariaService.setBusy(this.parent.getContent().querySelector('.' + literals.content), true);\n if (isFActon) {\n var deffered = new Deferred();\n dataManager = this.getFData(deffered, args);\n }\n if (!dataManager) {\n dataManager = this.data.getData(args, this.data.generateQuery().requiresCount());\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dataManager = dataManager.then(function (e) {\n var query = _this.data.generateQuery().requiresCount();\n if (_this.emptyGrid) {\n var def = new Deferred();\n def.resolve({ result: [], count: 0 });\n return def.promise;\n }\n return _this.data.getData(args, query);\n });\n }\n if (this.parent.getForeignKeyColumns().length && (!isFActon || this.parent.searchSettings.key.length)) {\n var deffered_1 = new Deferred();\n dataManager = dataManager.then(function (e) {\n _this.parent.notify(events.getForeignKeyData, { dataManager: dataManager, result: e, promise: deffered_1, action: args });\n return deffered_1.promise;\n });\n }\n if (this.parent.groupSettings.disablePageWiseAggregates && this.parent.groupSettings.columns.length) {\n dataManager = dataManager.then(function (e) { return _this.validateGroupRecords(e); });\n }\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, args); })\n .catch(function (e) { return _this.dataManagerFailure(e, args); });\n };\n Render.prototype.getFData = function (deferred, args) {\n this.parent.notify(events.getForeignKeyData, { isComplex: true, promise: deferred, action: args });\n return deferred.promise;\n };\n Render.prototype.isNeedForeignAction = function () {\n var gObj = this.parent;\n return !!((gObj.allowFiltering && gObj.filterSettings.columns.length) ||\n (gObj.searchSettings.key.length)) && this.foreignKey(this.parent.getForeignKeyColumns());\n };\n Render.prototype.foreignKey = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n var fbool = false;\n fbool = _this.parent.filterSettings.columns.some(function (value) {\n return col.uid === value.uid;\n });\n return !!(fbool || _this.parent.searchSettings.key.length);\n });\n };\n Render.prototype.sendBulkRequest = function (args) {\n var _this = this;\n args.requestType = 'batchsave';\n var gObj = this.parent;\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage && gObj.pagerModule.pagerObj.checkAll) {\n var dataLength = args['changes'].addedRecords.length;\n if (dataLength) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + dataLength } }, true);\n }\n }\n var promise = this.data.saveChanges(args.changes, this.parent.getPrimaryKeyFieldNames()[0], args.original);\n var query = this.data.generateQuery().requiresCount();\n if (this.data.dataManager.dataSource.offline) {\n this.refreshDataManager({ requestType: 'batchsave' });\n return;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n promise.then(function (e) {\n _this.data.getData(args, query)\n .then(function (e) { return _this.dmSuccess(e, args); })\n .catch(function (e) { return _this.dmFailure(e, args); });\n })\n .catch(function (e) { return _this.dmFailure(e, args); });\n }\n };\n Render.prototype.dmSuccess = function (e, args) {\n this.dataManagerSuccess(e, args);\n };\n Render.prototype.dmFailure = function (e, args) {\n this.dataManagerFailure(e, args);\n };\n /**\n * Render empty row to Grid which is used at the time to represent to no records.\n *\n * @returns {void}\n * @hidden\n */\n Render.prototype.renderEmptyRow = function () {\n this.emptyRow(true);\n };\n Render.prototype.emptyRow = function (isTrigger) {\n var gObj = this.parent;\n var tbody = this.contentRenderer.getTable().querySelector(literals.tbody);\n if (!isNullOrUndefined(tbody)) {\n remove(tbody);\n }\n tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var spanCount = 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n var tr = this.parent.createElement('tr', { className: 'e-emptyrow' });\n tr.appendChild(this.parent.createElement('td', {\n innerHTML: this.l10n.getConstant('EmptyRecord'),\n attrs: { colspan: (gObj.getVisibleColumns().length + spanCount + gObj.groupSettings.columns.length).toString() }\n }));\n tbody.appendChild(tr);\n this.contentRenderer.renderEmpty(tbody);\n if (isTrigger) {\n this.parent.trigger(events.dataBound, {});\n this.parent.notify(events.onEmpty, { rows: [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })] });\n }\n };\n Render.prototype.dynamicColumnChange = function () {\n if (this.parent.getCurrentViewRecords().length) {\n this.updateColumnType(this.parent.getCurrentViewRecords()[0]);\n }\n };\n Render.prototype.updateColumnType = function (record) {\n var columns = this.parent.getColumns();\n var value;\n var cFormat = 'customFormat';\n var equalTo = 'equalTo';\n var data = record && record.items ? record.items[0] : record;\n var fmtr = this.locator.getService('valueFormatter');\n for (var i = 0, len = columns.length; i < len; i++) {\n value = getObject(columns[parseInt(i.toString(), 10)].field || '', data);\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)][\"\" + cFormat])) {\n columns[parseInt(i.toString(), 10)].format = columns[parseInt(i.toString(), 10)][\"\" + cFormat];\n }\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules)\n && !isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo])) {\n columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0] = this.parent.element.id + columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0];\n }\n if (columns[parseInt(i.toString(), 10)].isForeignColumn() && columns[parseInt(i.toString(), 10)].columnData) {\n value = getObject(columns[parseInt(i.toString(), 10)].foreignKeyValue || '', columns[parseInt(i.toString(), 10)].columnData[0]);\n }\n if (!isNullOrUndefined(value)) {\n this.isColTypeDef = true;\n if (!columns[parseInt(i.toString(), 10)].type) {\n columns[parseInt(i.toString(), 10)].type = value.getDay ? (value.getHours() > 0 || value.getMinutes() > 0 ||\n value.getSeconds() > 0 || value.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n }\n else {\n columns[parseInt(i.toString(), 10)].type = columns[parseInt(i.toString(), 10)].type || null;\n }\n var valueFormatter = new ValueFormatter();\n if (columns[parseInt(i.toString(), 10)].format && (columns[parseInt(i.toString(), 10)].format.skeleton\n || (columns[parseInt(i.toString(), 10)].format.format &&\n typeof columns[parseInt(i.toString(), 10)].format.format === 'string'))) {\n columns[parseInt(i.toString(), 10)].setFormatter(valueFormatter.getFormatFunction(extend({}, columns[parseInt(i.toString(), 10)].format)));\n columns[parseInt(i.toString(), 10)].setParser(valueFormatter.getParserFunction(columns[parseInt(i.toString(), 10)].format));\n }\n if (typeof (columns[parseInt(i.toString(), 10)].format) === 'string') {\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n else if (!columns[parseInt(i.toString(), 10)].format && columns[parseInt(i.toString(), 10)].type === 'number') {\n columns[parseInt(i.toString(), 10)].setParser(fmtr.getParserFunction({ format: 'n2' }));\n }\n if (columns[parseInt(i.toString(), 10)].type === 'dateonly' && !columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = 'yMd';\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * @param {ReturnType} e - specifies the return type\n * @param {NotifyArgs} args - specifies the Notifyargs\n * @returns {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Render.prototype.dataManagerSuccess = function (e, args) {\n var _this = this;\n var gObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n e.actionArgs = args;\n var isInfiniteDelete = this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache &&\n !gObj.groupSettings.enableLazyLoading && (args.requestType === 'delete' || (args.requestType === 'save' &&\n this.parent.infiniteScrollModule.requestType === 'add' && !(gObj.sortSettings.columns.length ||\n gObj.filterSettings.columns.length || this.parent.groupSettings.columns.length || gObj.searchSettings.key)));\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeDataBound, e, function (dataArgs) {\n if (dataArgs.cancel) {\n return;\n }\n dataArgs.result = isNullOrUndefined(dataArgs.result) ? [] : dataArgs.result;\n var len = Object.keys(dataArgs.result).length;\n if (_this.parent.isDestroyed) {\n return;\n }\n if ((!gObj.getColumns().length && !len) && !(gObj.columns.length && gObj.columns[0] instanceof Column)) {\n gObj.hideSpinner();\n return;\n }\n if (_this.isInfiniteEnd(args) && !len) {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n return;\n }\n _this.parent.isEdit = false;\n _this.parent.notify(events.editReset, {});\n _this.parent.notify(events.tooltipDestroy, {});\n if (args && args.requestType !== 'infiniteScroll') {\n _this.parent.notify(events.commandColumnDestroy, { type: 'refreshCommandColumn' });\n }\n _this.contentRenderer.prevCurrentView = _this.parent.currentViewData.slice();\n gObj.currentViewData = dataArgs.result;\n gObj.notify(events.refreshInfiniteCurrentViewData, { args: args, data: dataArgs.result });\n if (dataArgs.count && !gObj.allowPaging && (gObj.enableVirtualization || gObj.enableInfiniteScrolling)) {\n gObj.totalDataRecordsCount = dataArgs.count;\n }\n if (!len && dataArgs.count && gObj.allowPaging && args && args.requestType !== 'delete') {\n if (_this.parent.groupSettings.enableLazyLoading\n && (args.requestType === 'grouping' || args.requestType === 'ungrouping')) {\n _this.parent.notify(events.groupComplete, args);\n }\n gObj.prevPageMoving = true;\n gObj.pageSettings.totalRecordsCount = dataArgs.count;\n if (args.requestType !== 'paging') {\n gObj.pageSettings.currentPage = Math.ceil(dataArgs.count / gObj.pageSettings.pageSize);\n }\n gObj.dataBind();\n return;\n }\n if ((!gObj.getColumns().length && len || !_this.isLayoutRendered) && !isGroupAdaptive(gObj)) {\n gObj.removeMaskRow();\n _this.updatesOnInitialRender(dataArgs);\n }\n if (!_this.isColTypeDef && gObj.getCurrentViewRecords()) {\n if (_this.data.dataManager.dataSource.offline && gObj.dataSource && gObj.dataSource.length) {\n _this.updateColumnType(gObj.dataSource[0]);\n }\n else {\n _this.updateColumnType(gObj.getCurrentViewRecords()[0]);\n }\n }\n if (!_this.parent.isInitialLoad && _this.parent.groupSettings.disablePageWiseAggregates &&\n !_this.parent.groupSettings.columns.length) {\n dataArgs.result = _this.parent.dataSource instanceof Array ? _this.parent.dataSource : _this.parent.currentViewData;\n }\n if ((_this.parent.isReact || _this.parent.isVue) && !isNullOrUndefined(args) && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n clearReactVueTemplates(_this.parent, ['footerTemplate']);\n }\n if (_this.parent.isAngular && _this.parent.allowGrouping && _this.parent.groupSettings.captionTemplate\n && !(!isNullOrUndefined(args) && args.requestType === 'infiniteScroll')) {\n _this.parent.destroyTemplate(['groupSettings_captionTemplate']);\n }\n _this.parent.notify(events.dataReady, extend({ count: dataArgs.count, result: dataArgs.result, aggregates: dataArgs.aggregates }, args));\n if ((gObj.groupSettings.columns.length || (args && args.requestType === 'ungrouping'))\n && (args && args.requestType !== 'filtering')) {\n _this.headerRenderer.refreshUI();\n }\n if (len) {\n if (isGroupAdaptive(gObj)) {\n var content = 'content';\n args.scrollTop = { top: _this.contentRenderer[\"\" + content].scrollTop };\n }\n if (!isInfiniteDelete) {\n if (_this.parent.enableImmutableMode) {\n _this.contentRenderer.immutableModeRendering(args);\n }\n else {\n _this.contentRenderer.refreshContentRows(args);\n }\n }\n else {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n }\n }\n else {\n if (args && args.isCaptionCollapse) {\n return;\n }\n if (!gObj.getColumns().length) {\n gObj.element.innerHTML = '';\n alert(_this.l10n.getConstant('EmptyDataSourceError')); //ToDO: change this alert as dialog\n return;\n }\n _this.contentRenderer.setRowElements([]);\n _this.contentRenderer.setRowObjects([]);\n _this.ariaService.setBusy(_this.parent.getContent().querySelector('.' + literals.content), false);\n gObj.removeMaskRow();\n _this.renderEmptyRow();\n if (gObj.enableColumnVirtualization && !len) {\n _this.parent.notify(events.contentReady, { rows: gObj.getRowsObject(), args: {} });\n }\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, args);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n args.rows = [];\n args.isFrozen = _this.parent.getFrozenColumns() !== 0 && !args.isFrozen;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n _this.parent.hideSpinner();\n }\n _this.parent.notify(events.toolbarRefresh, {});\n _this.setRowCount(_this.parent.getCurrentViewRecords().length);\n if ('query' in e) {\n _this.parent.getDataModule().isQueryInvokedFromData = false;\n }\n });\n };\n /**\n * @param {object} e - specifies the object\n * @param {Object[]} e.result - specifies the result\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n Render.prototype.dataManagerFailure = function (e, args) {\n if (!isNullOrUndefined(this.parent.contentModule)) {\n this.ariaService.setOptions(this.parent.getContent().querySelector('.' + literals.content), { busy: false, invalid: true });\n this.setRowCount(1);\n }\n this.parent.trigger(events.actionFailure, { error: e });\n this.parent.hideSpinner();\n this.parent.removeMaskRow();\n if (args.requestType === 'save' || args.requestType === 'delete'\n || args.name === 'bulk-save') {\n return;\n }\n this.parent.currentViewData = [];\n this.renderEmptyRow();\n if (!this.parent.isInitialLoad) {\n this.parent.focusModule.setFirstFocusableTabIndex();\n }\n this.parent.log('actionfailure', { error: e });\n };\n Render.prototype.setRowCount = function (dataRowCount) {\n this.ariaService.setOptions(this.parent.getHeaderTable(), {\n rowcount: dataRowCount ? dataRowCount.toString() : '1'\n });\n };\n Render.prototype.isInfiniteEnd = function (args) {\n return this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache && args.requestType === 'delete';\n };\n Render.prototype.updatesOnInitialRender = function (e) {\n this.isLayoutRendered = true;\n if (this.parent.columns.length < 1) {\n this.buildColumns(e.result[0]);\n }\n prepareColumns(this.parent.columns, null, this.parent);\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.parent.isAutoGen = true;\n this.parent.notify(events.autoCol, {});\n };\n Render.prototype.iterateComplexColumns = function (obj, field, split) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n var childKeys = typeof obj[keys[parseInt(i.toString(), 10)]] === 'object'\n && obj[keys[parseInt(i.toString(), 10)]] && !(obj[keys[parseInt(i.toString(), 10)]] instanceof Date) ?\n Object.keys(obj[keys[parseInt(i.toString(), 10)]]) : [];\n if (childKeys.length) {\n this.iterateComplexColumns(obj[keys[parseInt(i.toString(), 10)]], field + (keys[parseInt(i.toString(), 10)] + '.'), split);\n }\n else {\n split[this.counter] = field + keys[parseInt(i.toString(), 10)];\n this.counter++;\n }\n }\n };\n Render.prototype.buildColumns = function (record) {\n var cols = [];\n var complexCols = {};\n this.iterateComplexColumns(record, '', complexCols);\n var columns = Object.keys(complexCols).filter(function (e) { return complexCols[\"\" + e] !== 'BlazId'; }).\n map(function (field) { return complexCols[\"\" + field]; });\n for (var i = 0, len = columns.length; i < len; i++) {\n cols[parseInt(i.toString(), 10)] = { 'field': columns[parseInt(i.toString(), 10)] };\n if (this.parent.enableColumnVirtualization) {\n cols[parseInt(i.toString(), 10)].width = !isNullOrUndefined(cols[parseInt(i.toString(), 10)].width) ?\n cols[parseInt(i.toString(), 10)].width : 200;\n }\n }\n this.parent.setProperties({ 'columns': cols }, true);\n };\n Render.prototype.instantiateRenderer = function () {\n this.renderer.addRenderer(RenderType.Header, new HeaderRender(this.parent, this.locator));\n this.renderer.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n var cellrender = this.locator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Header, new HeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Data, new CellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Indent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaption, new GroupCaptionCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaptionEmpty, new GroupCaptionEmptyCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Expand, new ExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.HeaderIndent, new HeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailHeader, new DetailHeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragHIcon, new RowDragDropHeaderRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailExpand, new DetailExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailFooterIntent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragIcon, new RowDragDropRenderer(this.parent, this.locator));\n };\n Render.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on('refreshdataSource', this.dataManagerSuccess, this);\n this.parent.on(events.modelChanged, this.refresh, this);\n this.parent.on(events.refreshComplete, this.refreshComplete, this);\n this.parent.on(events.bulkSave, this.sendBulkRequest, this);\n this.parent.on(events.showEmptyGrid, function () { _this.emptyGrid = true; }, this);\n this.parent.on(events.autoCol, this.dynamicColumnChange, this);\n };\n /**\n * @param {ReturnType} e - specifies the Return type\n * @returns {Promise} returns the object\n * @hidden\n */\n Render.prototype.validateGroupRecords = function (e) {\n var _this = this;\n var index = e.result.length - 1;\n if (index < 0) {\n return Promise.resolve(e);\n }\n var group0 = e.result[0];\n var groupN = e.result[parseInt(index.toString(), 10)];\n var predicate = [];\n var addWhere = function (input) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n predicate.push(new Predicate('field', '==', groups[parseInt(i.toString(), 10)].field).and(_this.getPredicate('key', 'equal', groups[parseInt(i.toString(), 10)].key)));\n }\n input.where(Predicate.or(predicate));\n };\n var query = new Query();\n addWhere(query);\n var curDm = new DataManager(e.result);\n var curFilter = curDm.executeLocal(query);\n var newQuery = this.data.generateQuery(true);\n var rPredicate = [];\n if (this.data.isRemote()) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n rPredicate.push(this.getPredicate(groups[parseInt(i.toString(), 10)].field, 'equal', groups[parseInt(i.toString(), 10)].key));\n }\n newQuery.where(Predicate.or(rPredicate));\n }\n else {\n addWhere(newQuery);\n }\n var deferred = new Deferred();\n this.data.getData({}, newQuery).then(function (r) {\n _this.updateGroupInfo(curFilter, r.result);\n deferred.resolve(e);\n }).catch(function (e) { return deferred.reject(e); });\n return deferred.promise;\n };\n Render.prototype.getPredicate = function (key, operator, value) {\n if (value instanceof Date) {\n return getDatePredicate({ field: key, operator: operator, value: value });\n }\n return new Predicate(key, operator, value);\n };\n Render.prototype.updateGroupInfo = function (current, untouched) {\n var dm = new DataManager(untouched);\n var elements = current;\n for (var i = 0; i < elements.length; i++) {\n var uGroup = dm.executeLocal(new Query()\n .where(new Predicate('field', '==', elements[parseInt(i.toString(), 10)].field).and(this.getPredicate('key', 'equal', elements[parseInt(i.toString(), 10)].key))))[0];\n elements[parseInt(i.toString(), 10)].count = uGroup.count;\n var itemGroup = elements[parseInt(i.toString(), 10)].items;\n var uGroupItem = uGroup.items;\n if (itemGroup.GroupGuid) {\n elements[parseInt(i.toString(), 10)].items =\n this.updateGroupInfo(elements[parseInt(i.toString(), 10)].items, uGroup.items);\n }\n var rows = this.parent.aggregates;\n for (var j = 0; j < rows.length; j++) {\n var row = rows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n var types = row.columns[parseInt(k.toString(), 10)].type instanceof Array ?\n (row.columns[parseInt(k.toString(), 10)].type) :\n [(row.columns[parseInt(k.toString(), 10)].type)];\n for (var l = 0; l < types.length; l++) {\n var key = row.columns[parseInt(k.toString(), 10)].field + ' - ' + types[parseInt(l.toString(), 10)].toLowerCase();\n var data = itemGroup.level ? uGroupItem.records : uGroup.items;\n var context = this.parent;\n if (types[parseInt(l.toString(), 10)] === 'Custom') {\n var data_1 = itemGroup.level ? uGroupItem : uGroup;\n var temp = row.columns[parseInt(k.toString(), 10)]\n .customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = temp ? temp.call(context, data_1, row.columns[parseInt(k.toString(), 10)]) : '';\n }\n else {\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = DataUtil.aggregates[types[parseInt(l.toString(), 10)].toLowerCase()](data, row.columns[parseInt(k.toString(), 10)].field);\n }\n }\n }\n }\n }\n return current;\n };\n return Render;\n}());\nexport { Render };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\n/**\n * CellRendererFactory\n *\n * @hidden\n */\nvar CellRendererFactory = /** @class */ (function () {\n function CellRendererFactory() {\n this.cellRenderMap = {};\n }\n CellRendererFactory.prototype.addCellRenderer = function (name, type) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n this.cellRenderMap[\"\" + name] = type;\n }\n };\n CellRendererFactory.prototype.getCellRenderer = function (name) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The cellRenderer \" + name + \" is not found\";\n }\n else {\n return this.cellRenderMap[\"\" + name];\n }\n };\n return CellRendererFactory;\n}());\nexport { CellRendererFactory };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { EventHandler, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { parentsUntil, addBiggerDialog, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ResponsiveDialogAction } from '../base/enum';\n/**\n *\n * The `ResponsiveDialogRenderer` module is used to render the responsive dialogs.\n */\nvar ResponsiveDialogRenderer = /** @class */ (function () {\n function ResponsiveDialogRenderer(parent, serviceLocator) {\n this.sortedCols = [];\n this.sortPredicate = [];\n /** @hidden */\n this.isCustomDialog = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n ResponsiveDialogRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: events.filterDialogClose, handler: this.closeCustomDialog },\n { event: events.refreshCustomFilterOkBtn, handler: this.refreshCustomFilterOkBtn },\n { event: events.renderResponsiveCmenu, handler: this.renderResponsiveContextMenu },\n { event: events.filterCmenuSelect, handler: this.renderCustomFilterDiv },\n { event: events.customFilterClose, handler: this.customExFilterClose },\n { event: events.refreshCustomFilterClearBtn, handler: this.refreshCustomFilterClearBtn }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.onActionCompleteFn = this.editComplate.bind(this);\n this.parent.addEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n ResponsiveDialogRenderer.prototype.customExFilterClose = function () {\n this.isCustomDlgRender = false;\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDiv = function () {\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var title = header.querySelector('.e-dlg-custom-header');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n this.isCustomDlgRender = true;\n this.parent.filterModule.filterModule.closeDialog();\n this.saveBtn.element.style.display = '';\n this.refreshCustomFilterOkBtn({ disabled: false });\n this.backBtn.element.style.display = 'none';\n closeBtn.style.display = '';\n title.innerHTML = this.parent.localeObj.getConstant('CustomFilter');\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n this.customExcelFilterParent = this.parent.createElement('div', { className: 'e-xl-customfilterdiv e-default-filter' });\n content.appendChild(this.customExcelFilterParent);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContextMenu = function (args) {\n if (this.action === ResponsiveDialogAction.isFilter) {\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n var text = header.querySelector('.e-dlg-custom-header');\n if (args.isOpen) {\n content.firstChild.style.display = 'none';\n content.appendChild(args.target);\n closeBtn.style.display = 'none';\n this.saveBtn.element.style.display = 'none';\n this.filterClearBtn.element.style.display = 'none';\n text.innerHTML = args.header;\n var backBtn = this.parent.createElement('button');\n var span = this.parent.createElement('span', { className: 'e-btn-icon e-resfilterback e-icons' });\n backBtn.appendChild(span);\n this.backBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-res-back-btn' + ' ' + this.parent.cssClass : 'e-res-back-btn'\n });\n this.backBtn.appendTo(backBtn);\n text.parentElement.insertBefore(backBtn, text);\n }\n else if (this.backBtn && !this.isCustomDlgRender) {\n content.firstChild.style.display = '';\n remove(this.backBtn.element);\n closeBtn.style.display = '';\n this.saveBtn.element.style.display = '';\n if (this.isFiltered) {\n this.filterClearBtn.element.style.display = '';\n }\n text.innerHTML = this.getHeaderTitle({ action: ResponsiveDialogAction.isFilter }, args.col);\n }\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterClearBtn = function (args) {\n if (this.filterClearBtn) {\n this.isFiltered = args.isFiltered;\n this.filterClearBtn.element.style.display = args.isFiltered ? '' : 'none';\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterOkBtn = function (args) {\n if (this.saveBtn) {\n this.saveBtn.disabled = args.disabled;\n }\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContent = function (col) {\n var _this = this;\n var gObj = this.parent;\n if (col) {\n this.filterParent = this.parent.createElement('div', { className: 'e-mainfilterdiv e-default-filter', id: col.uid + '-main-filter' });\n return this.filterParent;\n }\n else {\n var cols = gObj.getColumns();\n this.customColumnDiv = gObj.createElement('div', { className: 'columndiv', styles: 'width: 100%' });\n var sortBtnParent = gObj.createElement('div', { className: 'e-ressortbutton-parent' });\n var filteredCols = [];\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter) {\n for (var i = 0; i < gObj.filterSettings.columns.length; i++) {\n filteredCols.push(gObj.filterSettings.columns[parseInt(i.toString(), 10)].field);\n }\n }\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible || (!cols[parseInt(i.toString(), 10)].allowSorting && isSort)\n || (!cols[parseInt(i.toString(), 10)].allowFiltering && isFilter)) {\n continue;\n }\n var cDiv = gObj.createElement('div', { className: 'e-responsivecoldiv' });\n cDiv.setAttribute('data-e-mappingname', cols[parseInt(i.toString(), 10)].field);\n cDiv.setAttribute('data-e-mappinguid', cols[parseInt(i.toString(), 10)].uid);\n var span = gObj.createElement('span', { innerHTML: cols[parseInt(i.toString(), 10)].headerText, className: 'e-res-header-text' });\n cDiv.appendChild(span);\n this.customColumnDiv.appendChild(cDiv);\n if (isSort) {\n var fields = this.getSortedFieldsAndDirections('field');\n var index = fields.indexOf(cols[parseInt(i.toString(), 10)].field);\n var button = gObj.createElement('button', { id: gObj.element.id + cols[parseInt(i.toString(), 10)].field + 'sortbutton' });\n var clone = sortBtnParent.cloneNode();\n clone.appendChild(button);\n cDiv.appendChild(clone);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? 'e-ressortbutton' + ' ' + this.parent.cssClass : 'e-ressortbutton'\n });\n btnObj.appendTo(button);\n var buttonInnerText = void 0;\n if ((!isNullOrUndefined(this.parent.sortSettings.columns[parseInt(index.toString(), 10)]))) {\n buttonInnerText = (this.parent.sortSettings.columns[parseInt(index.toString(), 10)].direction === 'Ascending') ?\n this.parent.localeObj.getConstant('AscendingText') : this.parent.localeObj.getConstant('DescendingText');\n }\n button.innerHTML = index > -1 ? buttonInnerText : this.parent.localeObj.getConstant('NoneText');\n button.onclick = function (e) {\n _this.sortButtonClickHandler(e.target);\n };\n }\n if (isFilter && filteredCols.indexOf(cols[parseInt(i.toString(), 10)].field) > -1) {\n var divIcon = gObj.createElement('div', { className: 'e-icons e-res-icon e-filtersetdiv' });\n var iconSpan = gObj.createElement('span', { className: 'e-icons e-res-icon e-filterset' });\n iconSpan.setAttribute('colType', cols[parseInt(i.toString(), 10)].type);\n divIcon.appendChild(iconSpan);\n cDiv.appendChild(divIcon);\n }\n }\n EventHandler.add(this.customColumnDiv, 'click', this.customFilterColumnClickHandler, this);\n return this.customColumnDiv;\n }\n };\n ResponsiveDialogRenderer.prototype.getSortedFieldsAndDirections = function (name) {\n var fields = [];\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n fields.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)][\"\" + name]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.sortButtonClickHandler = function (target) {\n if (target) {\n var columndiv = parentsUntil(target, 'e-responsivecoldiv');\n var field = columndiv.getAttribute('data-e-mappingname');\n if (!this.parent.allowMultiSorting) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n this.resetSortButtons(target);\n }\n var txt = target.textContent;\n var directionTxt = txt === this.parent.localeObj.getConstant('NoneText') ? this.parent.localeObj.getConstant('AscendingText')\n : txt === this.parent.localeObj.getConstant('AscendingText') ? this.parent.localeObj.getConstant('DescendingText')\n : this.parent.localeObj.getConstant('NoneText');\n var direction = directionTxt === this.parent.localeObj.getConstant('AscendingText') ? 'Ascending'\n : directionTxt === this.parent.localeObj.getConstant('DescendingText') ? 'Descending' : 'None';\n target.innerHTML = directionTxt;\n this.setSortedCols(field, direction);\n }\n };\n ResponsiveDialogRenderer.prototype.resetSortButtons = function (target) {\n var buttons = [].slice.call(this.customColumnDiv.getElementsByClassName('e-ressortbutton'));\n for (var i = 0; i < buttons.length; i++) {\n if (buttons[parseInt(i.toString(), 10)] !== target) {\n buttons[parseInt(i.toString(), 10)].innerHTML = 'None';\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setSortedCols = function (field, direction) {\n var fields = this.getCurrentSortedFields();\n var index = fields.indexOf(field);\n if (this.parent.allowMultiSorting && index > -1) {\n this.sortedCols.splice(index, 1);\n this.sortPredicate.splice(index, 1);\n }\n this.isSortApplied = true;\n if (direction !== 'None') {\n this.sortedCols.push(field);\n this.sortPredicate.push({ field: field, direction: direction });\n }\n };\n ResponsiveDialogRenderer.prototype.getCurrentSortedFields = function () {\n var fields = [];\n for (var i = 0; i < this.sortedCols.length; i++) {\n fields.push(this.sortedCols[parseInt(i.toString(), 10)]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.customFilterColumnClickHandler = function (e) {\n if (this.action !== ResponsiveDialogAction.isFilter) {\n return;\n }\n var gObj = this.parent;\n var target = e.target;\n if (gObj.filterSettings.type !== 'FilterBar') {\n if (target.classList.contains('e-responsivecoldiv') || target.parentElement.classList.contains('e-responsivecoldiv')) {\n var field = target.getAttribute('data-e-mappingname');\n if (!field) {\n field = target.parentElement.getAttribute('data-e-mappingname');\n }\n if (field) {\n var col = gObj.getColumnByField(field);\n this.isRowResponsive = true;\n this.showResponsiveDialog(col);\n }\n }\n else if (target.classList.contains('e-filterset') || target.parentElement.classList.contains('e-filtersetdiv')) {\n var colDiv = parentsUntil(target, 'e-responsivecoldiv');\n if (colDiv) {\n var field = colDiv.getAttribute('data-e-mappingname');\n var col = gObj.getColumnByField(field);\n if (col.filter.type === 'Menu' || (!col.filter.type && gObj.filterSettings.type === 'Menu')) {\n this.isDialogClose = true;\n }\n this.parent.filterModule.filterModule.clearCustomFilter(col);\n this.removeCustomDlgFilterEle(target);\n }\n }\n }\n };\n /**\n * Function to show the responsive dialog\n *\n * @param {Column} col - specifies the column\n * @returns {void}\n */\n ResponsiveDialogRenderer.prototype.showResponsiveDialog = function (col) {\n if (this.isCustomDialog && this.action === ResponsiveDialogAction.isFilter && !this.isRowResponsive) {\n this.renderCustomFilterDialog();\n }\n else {\n this.filteredCol = col;\n this.renderResponsiveDialog(col);\n if (this.parent.enableAdaptiveUI && col) {\n this.parent.filterModule.setFilterModel(col);\n this.parent.filterModule.filterModule.openDialog(this.parent.filterModule.createOptions(col, undefined));\n }\n if (this.action === ResponsiveDialogAction.isSort) {\n var args = {\n cancel: false, dialogObj: this.customResponsiveDlg, requestType: 'beforeOpenAptiveSortDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n }\n this.customResponsiveDlg.show(true);\n this.customResponsiveDlg.element.style.maxHeight = '100%';\n this.setTopToChildDialog(this.customResponsiveDlg.element);\n }\n };\n ResponsiveDialogRenderer.prototype.setTopToChildDialog = function (dialogEle) {\n var child = dialogEle.querySelector('.e-dialog');\n if (child) {\n var top_1 = dialogEle.querySelector('.e-dlg-header-content').getBoundingClientRect().height;\n child.style.top = top_1 + 'px';\n }\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'customfilter',\n className: this.parent.cssClass ?\n 'e-customfilterdiv e-responsive-dialog ' + this.parent.cssClass : 'e-customfilterdiv e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customFilterDlg = this.getDialogOptions(col, true);\n var args = {\n cancel: false, dialogObj: this.customFilterDlg, requestType: 'beforeOpenAptiveFilterDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n this.customFilterDlg.appendTo(outerDiv);\n this.customFilterDlg.show(true);\n this.customFilterDlg.element.style.maxHeight = '100%';\n };\n ResponsiveDialogRenderer.prototype.getDialogOptions = function (col, isCustomFilter, id) {\n var options = new Dialog({\n isModal: true,\n showCloseIcon: true,\n closeOnEscape: false,\n locale: this.parent.locale,\n target: this.parent.adaptiveDlgTarget ? this.parent.adaptiveDlgTarget : document.body,\n visible: false,\n enableRtl: this.parent.enableRtl,\n content: this.renderResponsiveContent(col),\n open: this.dialogOpen.bind(this),\n created: this.dialogCreated.bind(this),\n close: this.beforeDialogClose.bind(this),\n width: '100%',\n height: '100%',\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n options[\"\" + isStringTemplate] = true;\n if (isCustomFilter) {\n options.header = this.renderResponsiveHeader(col, undefined, true);\n options.cssClass = 'e-customfilter';\n }\n else {\n options.header = this.renderResponsiveHeader(col);\n options.cssClass = this.parent.rowRenderingMode === 'Vertical' && this.action === ResponsiveDialogAction.isFilter\n ? 'e-res' + id + ' e-row-responsive-filter' : 'e-res' + id;\n }\n return options;\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var id = this.action === ResponsiveDialogAction.isFilter ? 'filter' : 'sort';\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'responsive' + id,\n className: this.parent.cssClass ?\n 'e-res' + id + 'div e-responsive-dialog ' + this.parent.cssClass : 'e-res' + id + 'div e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customResponsiveDlg = this.getDialogOptions(col, false, id);\n this.customResponsiveDlg.appendTo(outerDiv);\n };\n ResponsiveDialogRenderer.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n ResponsiveDialogRenderer.prototype.dialogOpen = function () {\n if (this.action === ResponsiveDialogAction.isSort && this.parent.allowMultiSorting) {\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n this.sortedCols.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field);\n var sortField = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field;\n var sortDirection = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].direction;\n this.sortPredicate.push({ field: sortField, direction: sortDirection });\n }\n }\n };\n ResponsiveDialogRenderer.prototype.beforeDialogClose = function (args) {\n this.isDialogClose = args.element && !args.element.querySelector('.e-xl-customfilterdiv')\n && args.element.classList.contains('e-resfilterdiv');\n if (this.action === ResponsiveDialogAction.isFilter) {\n if (args.element.classList.contains('e-resfilterdiv')) {\n this.parent.filterModule.filterModule.closeResponsiveDialog(this.isCustomDlgRender);\n }\n else if (args.element.classList.contains('e-customfilterdiv')) {\n this.closeCustomFilter();\n }\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.closeCustomDialog();\n }\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n };\n ResponsiveDialogRenderer.prototype.sortColumn = function () {\n if (!this.isSortApplied) {\n this.closeCustomDialog();\n return;\n }\n if (this.sortPredicate.length) {\n this.parent.setProperties({ sortSettings: { columns: [] } }, true);\n }\n for (var i = 0; i < this.sortPredicate.length; i++) {\n this.parent.sortColumn(this.sortPredicate[parseInt(i.toString(), 10)].field, this.sortPredicate[parseInt(i.toString(), 10)].direction, this.parent.allowMultiSorting);\n }\n if (!this.sortPredicate.length) {\n this.parent.clearSorting();\n }\n this.closeCustomDialog();\n };\n ResponsiveDialogRenderer.prototype.getHeaderTitle = function (args, col) {\n var gObj = this.parent;\n var title;\n if (this.action === ResponsiveDialogAction.isEdit) {\n title = gObj.localeObj.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else if (this.action === ResponsiveDialogAction.isAdd) {\n title = gObj.localeObj.getConstant('AddFormTitle');\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n title = col ? col.headerText || col.field : gObj.localeObj.getConstant('FilterButton');\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n title = gObj.localeObj.getConstant('Sort');\n }\n return title;\n };\n ResponsiveDialogRenderer.prototype.getDialogName = function (action) {\n var name;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n name = 'dialogEdit_wrapper_title';\n }\n else if (action === ResponsiveDialogAction.isFilter) {\n name = 'responsive_filter_dialog_wrapper';\n }\n return name;\n };\n ResponsiveDialogRenderer.prototype.getButtonText = function (action) {\n var text;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n text = 'Save';\n }\n else if (action === ResponsiveDialogAction.isFilter || this.action === ResponsiveDialogAction.isSort) {\n text = 'OKButton';\n }\n return text;\n };\n /**\n * Function to render the responsive header\n *\n * @param {Column} col - specifies the column\n * @param {ResponsiveDialogArgs} args - specifies the responsive dialog arguments\n * @param {boolean} isCustomFilter - specifies whether it is custom filter or not\n * @returns {HTMLElement | string} returns the html element or string\n */\n ResponsiveDialogRenderer.prototype.renderResponsiveHeader = function (col, args, isCustomFilter) {\n var _this = this;\n var gObj = this.parent;\n gObj.on(events.enterKeyHandler, this.keyHandler, this);\n var id = gObj.element.id + this.getDialogName(this.action);\n var header = gObj.createElement('div', { className: 'e-res-custom-element' });\n var titleDiv = gObj.createElement('div', { className: 'e-dlg-custom-header', id: id });\n titleDiv.innerHTML = this.getHeaderTitle(args, col);\n header.appendChild(titleDiv);\n var saveBtn = gObj.createElement('button');\n if (!isCustomFilter) {\n this.saveBtn = new Button({\n cssClass: this.parent.cssClass ?\n 'e-primary e-flat e-res-apply-btn' + ' ' + this.parent.cssClass : 'e-primary e-flat e-res-apply-btn'\n });\n saveBtn.innerHTML = gObj.localeObj.getConstant(this.getButtonText(this.action));\n this.saveBtn.appendTo(saveBtn);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n saveBtn.onclick = function (e) {\n _this.dialogHdrBtnClickHandler();\n };\n }\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter || isSort) {\n var id_1 = isSort ? 'sort' : 'filter';\n var clearBtn = gObj.createElement('button');\n this.filterClearBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-primary e-flat e-res-' + id_1 + '-clear-btn' + ' ' + this.parent.cssClass\n : 'e-primary e-flat e-res-' + id_1 + '-clear-btn'\n });\n if (isFilter) {\n var span = gObj.createElement('span', { className: 'e-btn-icon e-icon-filter-clear e-icons' });\n clearBtn.appendChild(span);\n }\n else {\n clearBtn.innerHTML = gObj.localeObj.getConstant('Clear');\n }\n header.appendChild(clearBtn);\n this.filterClearBtn.appendTo(clearBtn);\n clearBtn.onclick = function (e) {\n if ((parentsUntil(e.target, 'e-customfilter'))) {\n _this.parent.filterModule.clearFiltering();\n _this.removeCustomDlgFilterEle();\n }\n else {\n if (isFilter) {\n _this.filterClear();\n }\n else {\n _this.resetSortButtons();\n _this.sortedCols = [];\n _this.sortPredicate = [];\n _this.isSortApplied = true;\n }\n }\n };\n header.appendChild(clearBtn);\n }\n if (!isCustomFilter) {\n header.appendChild(saveBtn);\n }\n return header;\n };\n ResponsiveDialogRenderer.prototype.filterClear = function () {\n this.parent.filterModule.filterModule.clearCustomFilter(this.filteredCol);\n this.parent.filterModule.filterModule.closeResponsiveDialog();\n };\n ResponsiveDialogRenderer.prototype.dialogHdrBtnClickHandler = function () {\n if (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd) {\n this.parent.endEdit();\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n this.parent.filterModule.filterModule.applyCustomFilter({ col: this.filteredCol, isCustomFilter: this.isCustomDlgRender });\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.sortColumn();\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomDialog = function () {\n if (this.isCustomDlgRender) {\n var mainfilterdiv = this.customResponsiveDlg.element.querySelector('.e-mainfilterdiv');\n remove(mainfilterdiv);\n return;\n }\n this.isRowResponsive = false;\n this.isCustomDlgRender = false;\n this.destroyCustomFilterDialog();\n };\n ResponsiveDialogRenderer.prototype.destroyCustomFilterDialog = function () {\n if (!this.customResponsiveDlg) {\n return;\n }\n var elem = document.getElementById(this.customResponsiveDlg.element.id);\n if (this.customResponsiveDlg && !this.customResponsiveDlg.isDestroyed && elem) {\n this.customResponsiveDlg.destroy();\n remove(elem);\n }\n this.closeCustomFilter();\n if (this.action === ResponsiveDialogAction.isSort) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomFilter = function () {\n if (!this.isDialogClose && this.customFilterDlg) {\n var customEle = document.getElementById(this.customFilterDlg.element.id);\n if (this.customFilterDlg && !this.customFilterDlg.isDestroyed && customEle) {\n this.customFilterDlg.destroy();\n remove(customEle);\n }\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n };\n ResponsiveDialogRenderer.prototype.removeCustomDlgFilterEle = function (target) {\n if (target) {\n if (target.parentElement.classList.contains('e-filtersetdiv')) {\n remove(target.parentElement);\n }\n else {\n remove(target);\n }\n }\n else {\n var child = this.customColumnDiv.children;\n for (var i = 0; i < child.length; i++) {\n target = child[parseInt(i.toString(), 10)].querySelector('.e-filtersetdiv');\n if (target) {\n remove(target);\n i--;\n }\n }\n }\n };\n ResponsiveDialogRenderer.prototype.keyHandler = function (e) {\n if (e.keyCode === 13 && ((this.action === ResponsiveDialogAction.isFilter\n && e.target.classList.contains('e-searchinput'))\n || (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd))) {\n this.dialogHdrBtnClickHandler();\n }\n };\n ResponsiveDialogRenderer.prototype.editComplate = function (args) {\n if (args.requestType === 'save' || args.requestType === 'cancel') {\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n }\n };\n ResponsiveDialogRenderer.prototype.removeEventListener = function () {\n if (this.customColumnDiv) {\n EventHandler.remove(this.customColumnDiv, 'click', this.customFilterColumnClickHandler);\n }\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.parent.removeEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n return ResponsiveDialogRenderer;\n}());\nexport { ResponsiveDialogRenderer };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogRenderer } from '../renderer/responsive-dialog-renderer';\n/**\n * ServiceLocator\n *\n * @hidden\n */\nvar ServiceLocator = /** @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n this.services[\"\" + name] = type;\n }\n };\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[\"\" + name];\n };\n ServiceLocator.prototype.registerAdaptiveService = function (type, isAdaptiveUI, action) {\n if (isAdaptiveUI) {\n type.responsiveDialogRenderer = new ResponsiveDialogRenderer(type.parent, type.serviceLocator);\n type.responsiveDialogRenderer.action = action;\n }\n else {\n if (type.responsiveDialogRenderer) {\n type.responsiveDialogRenderer.removeEventListener();\n type.responsiveDialogRenderer = undefined;\n }\n }\n };\n return ServiceLocator;\n}());\nexport { ServiceLocator };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\n/**\n * RendererFactory\n *\n * @hidden\n */\nvar RendererFactory = /** @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n this.rendererMap[\"\" + rName] = type;\n }\n };\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[\"\" + rName];\n }\n };\n return RendererFactory;\n}());\nexport { RendererFactory };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the Grid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the column chooser behavior of the Grid.\n */\nvar ColumnChooserSettings = /** @class */ (function (_super) {\n __extends(ColumnChooserSettings, _super);\n function ColumnChooserSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('startsWith')\n ], ColumnChooserSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(false)\n ], ColumnChooserSettings.prototype, \"ignoreAccent\", void 0);\n return ColumnChooserSettings;\n}(ChildProperty));\nexport { ColumnChooserSettings };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { Browser, EventHandler, createElement } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { remove, closest, select } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { setCssInGridPopUp, getPosition, isGroupAdaptive, addRemoveActiveClasses, removeAddCboxClasses } from '../base/util';\nimport { getCellsByTableName, getCellByColAndRowIndex, parentsUntil, gridActionHandler } from '../base/util';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { iterateExtend, setChecked, isComplexField, getObject } from '../base/util';\nimport { addRemoveEventListener } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Selection` module is used to handle cell and row selection.\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for the Grid selection module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SelectionSettings} selectionSettings - specifies the selectionsettings\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Selection(parent, selectionSettings, locator) {\n //Internal letiables\n /**\n * @hidden\n */\n this.selectedRowIndexes = [];\n /**\n * @hidden\n */\n this.selectedRowCellIndexes = [];\n /**\n * @hidden\n */\n this.selectedRecords = [];\n /**\n * @hidden\n */\n this.preventFocus = false;\n /**\n * @hidden\n */\n this.selectedColumnsIndexes = [];\n this.checkBoxState = false;\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n this.enableSelectMultiTouch = false;\n this.clearRowCheck = false;\n this.selectRowCheck = false;\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.totalRecordsCount = 0;\n this.chkAllCollec = [];\n this.isCheckedOnAdd = false;\n this.persistSelectedData = [];\n this.deSelectedData = [];\n this.isHdrSelectAllClicked = false;\n this.needColumnSelection = false;\n this.isCancelDeSelect = false;\n this.isPreventCellSelect = false;\n this.disableUI = false;\n this.isPersisted = false;\n this.cmdKeyPressed = false;\n this.cellselected = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.initialRowSelection = false;\n this.isPrevRowSelection = false;\n this.isKeyAction = false;\n this.isRowDragSelected = false;\n this.isPartialSelection = false;\n this.rmtHdrChkbxClicked = false;\n this.isCheckboxReset = false;\n /**\n * @hidden\n */\n this.autoFillRLselection = true;\n this.bottom = '0 0 2px 0';\n this.top = '2px 0 0 0';\n /* eslint-disable */\n this.right_bottom = '0 2px 2px 0';\n this.bottom_left = '0 0 2px 2px';\n this.top_right = '2px 2px 0 0';\n this.top_left = '2px 0 0 2px';\n this.top_bottom = '2px 0 2px 0';\n this.top_right_bottom = '2px 2px 2px 0';\n this.top_bottom_left = '2px 0 2px 2px';\n this.top_right_left = '2px 2px 0 2px';\n this.right_bottom_left = '0 2px 2px 2px';\n this.all_border = '2px';\n this.parent = parent;\n this.selectionSettings = selectionSettings;\n this.factory = locator.getService('rendererFactory');\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.wireEvents();\n }\n Selection.prototype.initializeSelection = function () {\n this.parent.log('selection_key_missing');\n this.render();\n };\n /**\n * The function used to trigger onActionBegin\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionBegin = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n };\n Selection.prototype.fDataUpdate = function (args) {\n if (!this.isMultiSelection && (!isNullOrUndefined(args.cellIndex) || !isNullOrUndefined(args.rowIndex))) {\n var rowObj = this.getRowObj(isNullOrUndefined(args.rowIndex) ? isNullOrUndefined(args.cellIndex) ?\n this.currentIndex : args.cellIndex.rowIndex : args.rowIndex);\n args.foreignKeyData = rowObj.foreignKeyData;\n }\n return args;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionComplete = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n this.isMultiSelection = false;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n /**\n * To destroy the selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.hidePopUp();\n this.clearSelection();\n this.removeEventListener();\n this.unWireEvents();\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n };\n Selection.prototype.isEditing = function () {\n return (this.parent.editSettings.mode === 'Normal' || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule &&\n this.parent.editModule.formObj && !this.parent.editModule.formObj.validate())) &&\n this.parent.isEdit && !this.parent.isPersistSelection;\n };\n Selection.prototype.getSelectedMovableRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && this.parent.getContent().querySelector('.' + literals.movableContent)) {\n return gObj.getMovableRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getSelectedFrozenRightRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && gObj.getFrozenMode() === literals.leftRight && gObj.getFrozenRightContent()) {\n return gObj.getFrozenRightRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getCurrentBatchRecordChanges = function () {\n var gObj = this.parent;\n if (gObj.editSettings.mode === 'Batch' && gObj.editModule) {\n var currentRecords = iterateExtend(this.parent.getCurrentViewRecords());\n currentRecords = gObj.editSettings.newRowPosition === 'Bottom' ?\n currentRecords.concat(this.parent.editModule.getBatchChanges()[literals.addedRecords]) :\n this.parent.editModule.getBatchChanges()[literals.addedRecords].concat(currentRecords);\n var deletedRecords = this.parent.editModule.getBatchChanges()[literals.deletedRecords];\n var primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < (deletedRecords.length); i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (deletedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey] === currentRecords[parseInt(j.toString(), 10)][\"\" + primaryKey]) {\n currentRecords.splice(j, 1);\n break;\n }\n }\n }\n return currentRecords;\n }\n else {\n return gObj.getCurrentViewRecords();\n }\n };\n /**\n * Selects a row by the given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectRow = function (index, isToggle) {\n if (this.selectedRowIndexes.length && this.selectionSettings.enableSimpleMultiRowSelection) {\n this.addRowsToSelection([index]);\n return;\n }\n var gObj = this.parent;\n var selectedRow = gObj.getRowByIndex(index);\n var rowObj = selectedRow && gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid'));\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n return;\n }\n var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n var selectData;\n var isRemoved = false;\n if (gObj.enableVirtualization && index > -1) {\n var e = { selectedIndex: index, isAvailable: true };\n this.parent.notify(events.selectVirtualRow, e);\n var frozenData = gObj.isFrozenGrid() ? gObj.contentModule.getRowObjectByIndex(index)\n : null;\n if (selectedRow && (gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')) || frozenData)) {\n selectData = frozenData ? frozenData : gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')).data;\n }\n else {\n if (e.isAvailable && !gObj.selectionSettings.persistSelection) {\n var prevSelectedData = this.parent.getSelectedRecords();\n if (prevSelectedData.length > 0) {\n this.clearRowSelection();\n }\n }\n return;\n }\n }\n else {\n selectData = this.getRowObj(index).data;\n }\n if (!this.isRowType() || !selectedRow || this.isEditing()) {\n // if (this.isEditing()) {\n // gObj.selectedRowIndex = index;\n // }\n return;\n }\n var isRowSelected = selectedRow.hasAttribute('aria-selected');\n this.activeTarget();\n isToggle = !isToggle ? isToggle :\n !this.selectedRowIndexes.length ? false :\n (this.selectedRowIndexes.length === 1 ? (this.isKeyAction && this.parent.isCheckBoxSelection ?\n false : index === this.selectedRowIndexes[0]) : false);\n this.isKeyAction = false;\n var args;\n var can = 'cancel';\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, row: selectedRow,\n previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can));\n }\n else {\n this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can)(args);\n }\n };\n Selection.prototype.rowSelectingCallBack = function (args, isToggle, index, selectData, isRemoved, isRowSelected, can) {\n var _this = this;\n return function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.index = index;\n _this.toggle = isToggle;\n _this.data = selectData;\n _this.removed = isRemoved;\n if (isRowSelected && _this.selectionSettings.persistSelection && !(_this.selectionSettings.checkboxMode === 'ResetOnRowClick')) {\n _this.clearSelectedRow(index);\n _this.selectRowCallBack();\n }\n else if (!isRowSelected && _this.selectionSettings.persistSelection &&\n _this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n _this.selectRowCallBack();\n }\n if (_this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n _this.isCheckboxReset = true;\n _this.clearSelection();\n }\n if (!_this.selectionSettings.persistSelection || _this.selectionSettings.checkboxMode === 'ResetOnRowClick' ||\n (!_this.parent.isCheckBoxSelection && _this.selectionSettings.persistSelection)) {\n _this.selectRowCheck = true;\n _this.clearRow();\n }\n };\n };\n Selection.prototype.selectRowCallBack = function () {\n var gObj = this.parent;\n var args;\n var index = this.index;\n var isToggle = this.toggle;\n var selectData = this.data;\n var isRemoved = this.removed;\n var selectedRow = gObj.getRowByIndex(index);\n var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n if (!isToggle && !isRemoved) {\n if (this.selectedRowIndexes.indexOf(index) <= -1) {\n this.updateRowSelection(selectedRow, index);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, index);\n }\n this.selectRowIndex(index);\n }\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked, rowIndexes: index\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(index);\n };\n Selection.prototype.selectMovableRow = function (selectedMovableRow, selectedFrozenRightRow, index) {\n if (this.parent.isFrozenGrid()) {\n this.updateRowSelection(selectedMovableRow, index);\n if (this.parent.getFrozenMode() === literals.leftRight && selectedFrozenRightRow) {\n this.updateRowSelection(selectedFrozenRightRow, index);\n }\n }\n };\n Selection.prototype.addMovableArgs = function (targetObj, mRow, frRow) {\n if (this.parent.isFrozenGrid()) {\n var mObj = { mRow: mRow, previousMovRow: this.parent.getMovableRows()[this.prevRowIndex] };\n var frozenRightRow = 'frozenRightRow';\n var previousFrozenRightRow = 'previousFrozenRightRow';\n if (this.parent.getFrozenMode() === literals.leftRight && frRow) {\n mObj[\"\" + frozenRightRow] = frRow;\n mObj[\"\" + previousFrozenRightRow] = this.parent.getFrozenRightDataRows()[this.prevRowIndex];\n }\n targetObj = __assign({}, targetObj, mObj);\n }\n return targetObj;\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @returns {void}\n */\n Selection.prototype.selectRowsByRange = function (startIndex, endIndex) {\n this.selectRows(this.getCollectionFromIndexes(startIndex, endIndex));\n this.selectRowIndex(endIndex);\n };\n Selection.prototype.selectedDataUpdate = function (selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex) {\n for (var i = 0, len = rowIndexes.length; i < len; i++) {\n var currentRow = this.parent.getDataRows()[rowIndexes[parseInt(i.toString(), 10)]];\n if (this.parent.enableVirtualization) {\n currentRow = this.parent.getRowByIndex(rowIndexes[parseInt(i.toString(), 10)]);\n }\n var rowObj = this.getRowObj(currentRow);\n if (rowObj && rowObj.isDataRow && rowObj.isSelectable) {\n selectedData.push(rowObj.data);\n selectedRows.push(currentRow);\n foreignKeyData.push(rowObj.foreignKeyData);\n }\n else {\n if (this.isPartialSelection && selectableRowIndex) {\n selectableRowIndex.splice(selectableRowIndex.indexOf(rowIndexes[parseInt(i.toString(), 10)]), 1);\n }\n }\n }\n };\n /**\n * Selects a collection of rows by index.\n *\n * @param {number[]} rowIndexes - Specifies an array of row indexes.\n * @returns {void}\n */\n Selection.prototype.selectRows = function (rowIndexes) {\n var _this = this;\n var gObj = this.parent;\n var selectableRowIndex = rowIndexes.slice();\n var rowIndex = !this.isSingleSel() ? rowIndexes[0] : rowIndexes[rowIndexes.length - 1];\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedMovableRow = this.getSelectedMovableRow(rowIndex);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(rowIndex);\n var can = 'cancel';\n var selectedData = [];\n if (!this.isRowType() || this.isEditing()) {\n return;\n }\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex);\n this.activeTarget();\n var args = {\n cancel: false,\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isInteracted: this.isInteracted, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.clearRow();\n _this.selectRowIndex(selectableRowIndex.slice(-1)[0]);\n var selectRowFn = function (index, preventFocus) {\n _this.updateRowSelection(gObj.getRowByIndex(index), index, preventFocus);\n if (gObj.isFrozenGrid()) {\n var rightEle = _this.parent.getFrozenMode() === literals.leftRight ? gObj.getFrozenRightRowByIndex(index)\n : undefined;\n _this.selectMovableRow(gObj.getMovableRowByIndex(index), rightEle, index);\n }\n _this.updateRowProps(rowIndex);\n };\n if (!_this.isSingleSel()) {\n for (var _i = 0, selectableRowIndex_1 = selectableRowIndex; _i < selectableRowIndex_1.length; _i++) {\n var rowIdx = selectableRowIndex_1[_i];\n selectRowFn(rowIdx, gObj.enableVirtualization ? true : false);\n }\n }\n else {\n selectRowFn(rowIndex);\n }\n args = {\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: _this.actualTarget,\n prevRow: gObj.getRows()[_this.prevRowIndex], previousRowIndex: _this.prevRowIndex,\n data: _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n args = _this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n if (_this.isRowSelected) {\n _this.onActionComplete(args, events.rowSelected);\n }\n _this.isInteracted = false;\n });\n };\n /**\n * Select rows with existing row selection by passing row indexes.\n *\n * @param {number} rowIndexes - Specifies the row indexes.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addRowsToSelection = function (rowIndexes) {\n var gObj = this.parent;\n var can = 'cancel';\n var target = this.target;\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedData = [];\n var indexes = gObj.getSelectedRowIndexes().concat(rowIndexes);\n var selectedRow = !this.isSingleSel() ? gObj.getRowByIndex(rowIndexes[0]) :\n gObj.getRowByIndex(rowIndexes[rowIndexes.length - 1]);\n var selectedMovableRow = !this.isSingleSel() ? this.getSelectedMovableRow(rowIndexes[0]) :\n this.getSelectedMovableRow(rowIndexes[rowIndexes.length - 1]);\n var selectedFrozenRightRow = !this.isSingleSel() ? this.getSelectedFrozenRightRow(rowIndexes[0]) :\n this.getSelectedFrozenRightRow(rowIndexes[rowIndexes.length - 1]);\n if ((!this.isRowType() || this.isEditing()) && !this.selectionSettings.checkboxOnly) {\n return;\n }\n var args;\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (this.isMultiCtrlRequest && !checkboxColumn.length) {\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, indexes);\n }\n for (var _i = 0, rowIndexes_1 = rowIndexes; _i < rowIndexes_1.length; _i++) {\n var rowIndex = rowIndexes_1[_i];\n var rowObj = this.getRowObj(rowIndex);\n var isUnSelected = this.selectedRowIndexes.indexOf(rowIndex) > -1;\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n continue;\n }\n this.selectRowIndex(rowIndex);\n if (isUnSelected && ((checkboxColumn.length ? true : this.selectionSettings.enableToggle) || this.isMultiCtrlRequest)) {\n this.isAddRowsToSelection = true;\n this.rowDeselect(events.rowDeselecting, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target);\n if (this.isCancelDeSelect) {\n return;\n }\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(rowIndex), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedRow), 1);\n this.selectRowIndex(this.selectedRowIndexes.length ? this.selectedRowIndexes[this.selectedRowIndexes.length - 1] : -1);\n selectedRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedRow, false, null, 'e-selectionbackground', 'e-active');\n if (selectedMovableRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedMovableRow), 1);\n selectedMovableRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedMovableRow, false, null, 'e-selectionbackground', 'e-active');\n }\n if (selectedFrozenRightRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedFrozenRightRow), 1);\n selectedFrozenRightRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedFrozenRightRow, false, null, 'e-selectionbackground', 'e-active');\n }\n this.rowDeselect(events.rowDeselected, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target, [selectedMovableRow], undefined, [selectedFrozenRightRow]);\n this.isInteracted = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.isHdrSelectAllClicked = false;\n }\n else {\n this.activeTarget();\n args = {\n cancel: false,\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args));\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n this.disableInteracted();\n return;\n }\n if (this.isSingleSel()) {\n this.clearRow();\n }\n this.updateRowSelection(selectedRow, rowIndex);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, rowIndex);\n }\n if (!isUnSelected) {\n args = {\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData,\n isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(rowIndex);\n if (this.isSingleSel()) {\n break;\n }\n }\n };\n Selection.prototype.getCollectionFromIndexes = function (startIndex, endIndex) {\n var indexes = [];\n // eslint-disable-next-line prefer-const\n var _a = (startIndex <= endIndex) ?\n { i: startIndex, max: endIndex } : { i: endIndex, max: startIndex }, i = _a.i, max = _a.max;\n for (; i <= max; i++) {\n indexes.push(i);\n }\n if (startIndex > endIndex) {\n indexes.reverse();\n }\n return indexes;\n };\n Selection.prototype.clearRow = function () {\n this.clearRowCheck = true;\n this.clearRowSelection();\n };\n Selection.prototype.clearRowCallBack = function () {\n if (this.isCancelDeSelect && this.parent.checkAllRows !== 'Check') {\n return;\n }\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.selectRowIndex(-1);\n if (this.isSingleSel() && this.parent.isPersistSelection) {\n this.selectedRowState = {};\n }\n };\n Selection.prototype.clearSelectedRow = function (index) {\n if (this.toggle) {\n var selectedEle = this.parent.getRowByIndex(index);\n if (!this.disableUI) {\n selectedEle.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedEle, false, true, 'e-selectionbackground', 'e-active');\n }\n this.removed = true;\n this.updatePersistCollection(selectedEle, false);\n this.updateCheckBoxes(selectedEle);\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(index), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(this.parent.getRowByIndex(index)), 1);\n }\n };\n Selection.prototype.updateRowProps = function (startIndex) {\n this.prevRowIndex = startIndex;\n this.isRowSelected = this.selectedRowIndexes.length && true;\n };\n Selection.prototype.getPkValue = function (pkField, data) {\n return pkField ? isComplexField(pkField) ? getObject(pkField, data) : data[\"\" + pkField] : data[\"\" + pkField];\n };\n Selection.prototype.updatePersistCollection = function (selectedRow, chkState) {\n var _this = this;\n if ((this.parent.isPersistSelection || this.parent.selectionSettings.persistSelection &&\n this.parent.getPrimaryKeyFieldNames().length > 0) && !isNullOrUndefined(selectedRow)) {\n if (!this.parent.isPersistSelection) {\n this.ensureCheckboxFieldSelection();\n }\n var rowObj = this.getRowObj(selectedRow);\n var pKey_1 = rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (pKey_1 === null) {\n return;\n }\n rowObj.isSelected = chkState;\n if ((chkState && !this.isPartialSelection) || (this.isPartialSelection && rowObj.isSelectable && rowObj.isSelected)) {\n this.selectedRowState[\"\" + pKey_1] = chkState;\n delete (this.unSelectedRowState[\"\" + pKey_1]);\n if (!this.persistSelectedData.some(function (data) { return _this.getPkValue(_this.primaryKey, data) === pKey_1; })) {\n this.persistSelectedData.push(rowObj.data);\n }\n }\n else {\n this.updatePersistDelete(pKey_1);\n }\n }\n };\n Selection.prototype.updatePersistDelete = function (pKey, isPartialSelection) {\n var _this = this;\n delete (this.selectedRowState[\"\" + pKey]);\n if (this.rmtHdrChkbxClicked) {\n this.unSelectedRowState[\"\" + pKey] = true;\n }\n var index;\n var isPresent = this.persistSelectedData.some(function (data, i) {\n index = i;\n return _this.getPkValue(_this.primaryKey, data) === pKey;\n });\n if (isPresent) {\n this.persistSelectedData.splice(index, 1);\n if (isPartialSelection) {\n this.parent.partialSelectedRecords.splice(index, 1);\n }\n }\n };\n Selection.prototype.updateCheckBoxes = function (row, chkState, rowIndex) {\n if (!isNullOrUndefined(row)) {\n var chkBox = row.querySelector('.e-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n removeAddCboxClasses(chkBox.nextElementSibling, chkState);\n setChecked(chkBox, chkState);\n if (isNullOrUndefined(this.checkedTarget) || (!isNullOrUndefined(this.checkedTarget)\n && !this.checkedTarget.classList.contains('e-checkselectall'))) {\n this.setCheckAllState(rowIndex);\n }\n }\n }\n };\n Selection.prototype.updateRowSelection = function (selectedRow, startIndex, preventFocus) {\n if (!selectedRow) {\n return;\n }\n this.selectedRowIndexes.push(startIndex);\n var len = this.selectedRowIndexes.length;\n if (this.parent.isFrozenGrid() && len > 1) {\n if ((this.selectedRowIndexes[len - 2] === this.selectedRowIndexes[len - 1])) {\n this.selectedRowIndexes.pop();\n }\n }\n this.selectedRecords.push(selectedRow);\n selectedRow.setAttribute('aria-selected', 'true');\n this.updatePersistCollection(selectedRow, true);\n this.updateCheckBoxes(selectedRow, true);\n this.addRemoveClassesForRow(selectedRow, true, null, 'e-selectionbackground', 'e-active');\n if (!this.preventFocus) {\n var target = this.focus.getPrevIndexes().cellIndex ?\n selectedRow.cells[this.focus.getPrevIndexes().cellIndex] :\n selectedRow.querySelector('.e-selectionbackground:not(.e-hide):not(.e-detailrowcollapse):not(.e-detailrowexpand)');\n if (this.parent.contextMenuModule && this.mouseButton === 2) {\n target = this.parent.contextMenuModule.cell;\n }\n if (!target || preventFocus) {\n return;\n }\n this.focus.onClick({ target: target }, true);\n }\n };\n /**\n * Deselects the currently selected rows and cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearSelection = function () {\n this.checkSelectAllClicked = true;\n if (this.selectionSettings.persistSelection && this.persistSelectedData.length) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (!this.parent.isPersistSelection || (this.parent.isPersistSelection && !this.parent.isEdit) ||\n (!isNullOrUndefined(this.checkedTarget) && this.checkedTarget.classList.contains('e-checkselectall'))) {\n var span = this.parent.element.querySelector('.e-gridpopup').querySelector('span');\n if (span.classList.contains('e-rowselect')) {\n span.classList.remove('e-spanclicked');\n }\n if (this.parent.isPersistSelection) {\n this.persistSelectedData = [];\n this.selectedRowState = {};\n }\n this.clearRowSelection();\n this.clearCellSelection();\n this.clearColumnSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n this.enableSelectMultiTouch = false;\n this.isInteracted = false;\n this.checkSelectAllClicked = false;\n this.isHdrSelectAllClicked = false;\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Selection.prototype.clearRowSelection = function () {\n var _this = this;\n if (this.isRowSelected) {\n var gObj = this.parent;\n var rows_1 = this.parent.getDataRows();\n var data_1 = [];\n var row_1 = [];\n var mRow_1 = [];\n var fRightRow_1 = [];\n var rowIndex_1 = [];\n var foreignKeyData_1 = [];\n var target_1 = this.target;\n for (var i = 0, len = this.selectedRowIndexes.length; i < len; i++) {\n var currentRow = this.parent.editSettings.mode === 'Batch' ?\n this.parent.getRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]]\n : this.parent.getDataRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n data_1.push(rowObj.data);\n row_1.push(currentRow);\n rowIndex_1.push(this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n foreignKeyData_1.push(rowObj.foreignKeyData);\n }\n if (gObj.isFrozenGrid()) {\n var mRows = gObj.getMovableRows();\n if (mRows && mRows.length) {\n mRow_1.push(mRows[this.selectedRowIndexes[parseInt(i.toString(), 10)]]);\n }\n if (gObj.getFrozenMode() === literals.leftRight) {\n var frRows = gObj.getFrozenRightRows();\n if (frRows && frRows.length) {\n fRightRow_1.push(frRows[this.selectedRowIndexes[parseInt(i.toString(), 10)]]);\n }\n }\n }\n }\n if (this.selectionSettings.persistSelection && this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n this.isRowClicked = this.checkSelectAllClicked ? true : false;\n }\n this.rowDeselect(events.rowDeselecting, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, mRow_1, function () {\n if (_this.isCancelDeSelect && (_this.isRowClicked || _this.checkSelectAllClicked || (_this.isInteracted &&\n !_this.parent.isPersistSelection))) {\n if (_this.parent.isPersistSelection) {\n if (_this.getCheckAllStatus(_this.parent.element.querySelector('.e-checkselectall')) === 'Intermediate') {\n for (var i = 0; i < _this.selectedRecords.length; i++) {\n _this.updatePersistCollection(_this.selectedRecords[parseInt(i.toString(), 10)], true);\n }\n }\n else {\n _this.parent.checkAllRows = 'Check';\n _this.updatePersistSelectedData(true);\n }\n }\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n return;\n }\n var element = [].slice.call(rows_1.filter(function (record) { return record.hasAttribute('aria-selected'); }));\n for (var j = 0; j < element.length; j++) {\n if (!_this.disableUI) {\n element[parseInt(j.toString(), 10)].removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(element[parseInt(j.toString(), 10)], false, true, 'e-selectionbackground', 'e-active');\n }\n // tslint:disable-next-line:align\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(element[parseInt(j.toString(), 10)], false);\n }\n _this.updateCheckBoxes(element[parseInt(j.toString(), 10)]);\n }\n for (var i = 0, len = _this.selectedRowIndexes.length; i < len; i++) {\n var movableRow = _this.getSelectedMovableRow(_this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n if (movableRow) {\n if (!_this.disableUI) {\n movableRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(movableRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(movableRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(movableRow, false);\n }\n }\n var frRow = _this.getSelectedFrozenRightRow(_this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n if (frRow) {\n if (!_this.disableUI) {\n frRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(frRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(frRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(frRow, false);\n }\n }\n }\n _this.selectedRowIndexes = [];\n _this.selectedRecords = [];\n _this.isRowSelected = false;\n _this.selectRowIndex(-1);\n _this.isPrevRowSelection = false;\n _this.rowDeselect(events.rowDeselected, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, mRow_1, undefined, fRightRow_1);\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n }, fRightRow_1);\n }\n else {\n if (this.clearRowCheck) {\n this.clearRowCallBack();\n this.clearRowCheck = false;\n if (this.selectRowCheck) {\n this.selectRowCallBack();\n this.selectRowCheck = false;\n }\n }\n }\n };\n Selection.prototype.rowDeselect = function (type, rowIndex, data, row, foreignKeyData, target, mRow, rowDeselectCallBack, frozenRightRow) {\n var _this = this;\n if ((this.selectionSettings.persistSelection && (this.isRowClicked || this.checkSelectAllClicked || (this.focus['activeKey'] &&\n this.focus.currentInfo.element.classList.contains('e-gridchkbox') && this.focus['activeKey'] === 'space'))) ||\n !this.selectionSettings.persistSelection) {\n var cancl_1 = 'cancel';\n var isSingleDeSel = rowIndex.length === 1 && this.deSelectedData.length === 1;\n var rowDeselectObj = {\n rowIndex: rowIndex[0], data: this.selectionSettings.persistSelection && (this.parent.checkAllRows === 'Uncheck' &&\n !isSingleDeSel) && this.selectionSettings.checkboxMode !== 'ResetOnRowClick' ? this.deSelectedData : data,\n foreignKeyData: foreignKeyData, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n if (type === 'rowDeselected') {\n delete rowDeselectObj.cancel;\n }\n var rowInString = 'row';\n var target_2 = 'target';\n var rowidx = 'rowIndex';\n var rowidxex = 'rowIndexes';\n var dataTxt = 'data';\n var foreignKey = 'foreignKeyData';\n rowDeselectObj[\"\" + rowInString] = row;\n rowDeselectObj[\"\" + target_2] = this.actualTarget;\n var isHeaderCheckBxClick = this.actualTarget && !isNullOrUndefined(closest(this.actualTarget, 'thead'));\n if (isHeaderCheckBxClick || rowIndex.length > 1) {\n rowDeselectObj[\"\" + rowidx] = rowIndex[0];\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n else if (rowIndex.length === 1) {\n rowDeselectObj[\"\" + dataTxt] = rowDeselectObj[\"\" + dataTxt][0];\n rowDeselectObj[\"\" + rowInString] = rowDeselectObj[\"\" + rowInString][0];\n rowDeselectObj[\"\" + foreignKey] = rowDeselectObj[\"\" + foreignKey][0];\n if (this.isAddRowsToSelection) {\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n }\n this.parent.trigger(type, this.parent.isFrozenGrid() ? __assign({}, rowDeselectObj, { mRow: mRow, frozenRightRow: frozenRightRow }) : rowDeselectObj, function (args) {\n _this.isCancelDeSelect = args[\"\" + cancl_1];\n if (!_this.isCancelDeSelect || (!_this.isRowClicked && !_this.isInteracted && !_this.checkSelectAllClicked)) {\n _this.updatePersistCollection(row[0], false);\n _this.updateCheckBoxes(row[0], undefined, rowIndex[0]);\n if (mRow) {\n _this.updateCheckBoxes(mRow[0], undefined, rowIndex[0]);\n }\n if (frozenRightRow) {\n _this.updateCheckBoxes(frozenRightRow[0], undefined, rowIndex[0]);\n }\n }\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n });\n }\n else if (this.selectionSettings.persistSelection && !this.isInteracted) {\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n }\n };\n Selection.prototype.getRowObj = function (row) {\n if (row === void 0) { row = this.currentIndex; }\n if (isNullOrUndefined(row)) {\n return {};\n }\n if (typeof row === 'number') {\n row = this.parent.getRowByIndex(row);\n }\n if (row) {\n return this.parent.getRowObjectFromUID(row.getAttribute('data-uid')) || {};\n }\n return {};\n };\n Selection.prototype.getSelectedMovableCell = function (cellIndex) {\n var gObj = this.parent;\n var col = gObj.getColumnByIndex(cellIndex.cellIndex);\n var frzCols = gObj.isFrozenGrid();\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n return gObj.getMovableCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n return null;\n }\n return null;\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectCell = function (cellIndex, isToggle) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(cellIndex);\n var args;\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n this.currentIndex = cellIndex.rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (!this.isCellType() || !selectedCell || this.isEditing()) {\n return;\n }\n var isCellSelected = selectedCell.classList.contains('e-cellselectionbackground');\n isToggle = !isToggle ? isToggle : (!isUndefined(this.prevCIdxs) &&\n cellIndex.rowIndex === this.prevCIdxs.rowIndex && cellIndex.cellIndex === this.prevCIdxs.cellIndex &&\n isCellSelected);\n if (!isToggle) {\n args = {\n data: selectedData, cellIndex: cellIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ?\n this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n cancel: false\n };\n var currentCell = 'currentCell';\n args[\"\" + currentCell] = selectedCell;\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData));\n this.cellselected = true;\n }\n else {\n this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData)(args);\n }\n };\n Selection.prototype.successCallBack = function (cellSelectingArgs, isToggle, cellIndex, selectedCell, selectedData) {\n var _this = this;\n return function (cellSelectingArgs) {\n var cncl = 'cancel';\n var currentCell = 'currentCell';\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n if (!isToggle) {\n cellSelectingArgs[\"\" + currentCell] = cellSelectingArgs[\"\" + currentCell] ? cellSelectingArgs[\"\" + currentCell] : selectedCell;\n }\n _this.clearCell();\n if (!isToggle) {\n _this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isToggle) {\n var args = {\n data: selectedData, cellIndex: cellIndex, currentCell: selectedCell,\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ?\n _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n _this.updateCellProps(cellIndex, cellIndex);\n _this.onActionComplete(args, events.cellSelected);\n }\n };\n };\n Selection.prototype.getCellIndex = function (rIdx, cIdx) {\n return (this.parent.getFrozenColumns() ? (cIdx >= this.parent.getFrozenColumns() ? this.parent.getMovableCellFromIndex(rIdx, cIdx)\n : this.parent.getCellFromIndex(rIdx, cIdx)) : this.parent.getCellFromIndex(rIdx, cIdx));\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @returns {void}\n */\n Selection.prototype.selectCellsByRange = function (startIndex, endIndex) {\n var _this = this;\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(startIndex);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(startIndex.rowIndex, startIndex.cellIndex);\n }\n var min;\n var max;\n var stIndex = startIndex;\n var edIndex = endIndex = endIndex ? endIndex : startIndex;\n var cellIndexes;\n this.currentIndex = startIndex.rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var args = {\n data: selectedData, cellIndex: startIndex, currentCell: selectedCell,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), function (cellSelectingArgs) {\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n _this.clearCell();\n if (startIndex.rowIndex > endIndex.rowIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex.rowIndex; i <= endIndex.rowIndex; i++) {\n if (_this.selectionSettings.cellSelectionMode.indexOf('Box') < 0) {\n min = i === startIndex.rowIndex ? (startIndex.cellIndex) : 0;\n max = i === endIndex.rowIndex ? (endIndex.cellIndex) : _this.getLastColIndex(i);\n }\n else {\n min = startIndex.cellIndex;\n max = endIndex.cellIndex;\n }\n cellIndexes = [];\n for (var j = min < max ? min : max, len = min > max ? min : max; j <= len; j++) {\n if (frzCols) {\n if (j < frzCols) {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(i, j);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n if (!selectedCell) {\n continue;\n }\n cellIndexes.push(j);\n _this.updateCellSelection(selectedCell);\n _this.addAttribute(selectedCell);\n }\n _this.selectedRowCellIndexes.push({ rowIndex: i, cellIndexes: cellIndexes });\n }\n var cellSelectedArgs = {\n data: selectedData, cellIndex: edIndex, currentCell: gObj.getCellFromIndex(edIndex.rowIndex, edIndex.cellIndex),\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ? _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n if (!_this.isDragged) {\n _this.onActionComplete(cellSelectedArgs, events.cellSelected);\n _this.cellselected = true;\n }\n _this.updateCellProps(stIndex, edIndex);\n });\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @returns {void}\n */\n Selection.prototype.selectCells = function (rowCellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(rowCellIndexes[0]);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[0].rowIndex, rowCellIndexes[0].cellIndexes[0]);\n }\n this.currentIndex = rowCellIndexes[0].rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectArgs[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.onActionBegin(cellSelectArgs, events.cellSelecting);\n for (var i = 0, len = rowCellIndexes.length; i < len; i++) {\n for (var j = 0, cellLen = rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes.length; j < cellLen; j++) {\n if (frzCols) {\n if (rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)] < frzCols) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n }\n if (!selectedCell) {\n continue;\n }\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n this.addRowCellIndex({ rowIndex: rowCellIndexes[parseInt(i.toString(), 10)].rowIndex,\n cellIndex: rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)] });\n }\n }\n this.updateCellProps({ rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] }, { rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] });\n var cellSelectedArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, selectedRowCellIndex: this.selectedRowCellIndexes,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n };\n /**\n * Select cells with existing cell selection by passing row and column index.\n *\n * @param {IIndex} cellIndexes - Defines the collection of row and column index.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addCellsToSelection = function (cellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell;\n var index;\n this.currentIndex = cellIndexes[0].rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n this.hideAutoFill();\n var col = gObj.getColumnByIndex(cellIndexes[0].cellIndex);\n var rowObj;\n gridActionHandler(this.parent, function (tableName, rows) {\n rowObj = rows[cellIndexes[0].rowIndex];\n }, [\n !col.getFreezeTableName() || col.getFreezeTableName() === literals.frozenLeft ? gObj.getRowsObject() : [],\n col.getFreezeTableName() === 'movable' ? gObj.getMovableRowsObject() : [],\n col.getFreezeTableName() === literals.frozenRight ? gObj.getFrozenRightRowsObject() : []\n ]);\n if (gObj.groupSettings.columns.length > 0) {\n rowObj = gObj.getRowObjectFromUID(this.target.parentElement.getAttribute('data-uid'));\n }\n var foreignKeyData = [];\n for (var _i = 0, cellIndexes_1 = cellIndexes; _i < cellIndexes_1.length; _i++) {\n var cellIndex = cellIndexes_1[_i];\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === cellIndex.rowIndex) {\n index = i;\n break;\n }\n }\n selectedCell = this.getSelectedMovableCell(cellIndex);\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n var idx = col.getFreezeTableName() === 'movable' ? cellIndex.cellIndex - left\n : col.getFreezeTableName() === literals.frozenRight ? cellIndex.cellIndex - (left + movable) : cellIndex.cellIndex;\n if (gObj.groupSettings.columns.length > 0) {\n foreignKeyData.push(rowObj.cells[idx + gObj.groupSettings.columns.length].foreignKeyData);\n }\n else {\n foreignKeyData.push(rowObj.cells[parseInt(idx.toString(), 10)].foreignKeyData);\n }\n var args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest,\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n previousRowCell: this.prevECIdxs ?\n gObj.getCellFromIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n args[\"\" + prvRowCellIndex] = this.prevECIdxs;\n var isUnSelected = index > -1;\n if (isUnSelected) {\n var selectedCellIdx = this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes;\n if (selectedCellIdx.indexOf(cellIndex.cellIndex) > -1) {\n this.cellDeselect(events.cellDeselecting, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n selectedCellIdx.splice(selectedCellIdx.indexOf(cellIndex.cellIndex), 1);\n if (selectedCellIdx.length === 0) {\n this.selectedRowCellIndexes.splice(index, 1);\n }\n selectedCell.classList.remove('e-cellselectionbackground');\n selectedCell.removeAttribute('aria-selected');\n this.cellDeselect(events.cellDeselected, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n }\n else {\n isUnSelected = false;\n this.onActionBegin(args, events.cellSelecting);\n this.addRowCellIndex({ rowIndex: cellIndex.rowIndex, cellIndex: cellIndex.cellIndex });\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n }\n }\n else {\n this.onActionBegin(args, events.cellSelecting);\n if (!isNullOrUndefined(args) && args[\"\" + cncl] === true) {\n return;\n }\n this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isUnSelected) {\n var cellSelectedArgs = {\n data: selectedData, cellIndex: cellIndexes[0], currentCell: selectedCell,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) :\n undefined, selectedRowCellIndex: this.selectedRowCellIndexes\n };\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n this.cellselected = true;\n }\n this.updateCellProps(cellIndex, cellIndex);\n }\n };\n Selection.prototype.getColIndex = function (rowIndex, index) {\n var frzCols = this.parent.isFrozenGrid();\n var col = this.parent.getColumnByIndex(index);\n var cells = getCellsByTableName(this.parent, col, rowIndex);\n if (cells) {\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[parseInt(m.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n if (colIndex === index) {\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n m += this.parent.getFrozenLeftCount();\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n m += (this.parent.getFrozenLeftColumnsCount() + this.parent.getMovableColumnsCount());\n }\n }\n return m;\n }\n }\n }\n return -1;\n };\n Selection.prototype.getLastColIndex = function (rowIndex) {\n var cells = this.parent.getFrozenColumns() ? this.parent.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll('td.e-rowcell')\n : this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll('td.e-rowcell');\n return parseInt(cells[cells.length - 1].getAttribute(literals.dataColIndex), 10);\n };\n Selection.prototype.clearCell = function () {\n this.clearCellSelection();\n };\n Selection.prototype.cellDeselect = function (type, cellIndexes, data, cells, foreignKeyData) {\n var cancl = 'cancel';\n if (cells[0] && cells[0].classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(cells[0], 'tr'));\n }\n var args = {\n cells: cells, data: data, cellIndexes: cellIndexes, foreignKeyData: foreignKeyData, cancel: false\n };\n this.parent.trigger(type, args);\n this.isPreventCellSelect = args[\"\" + cancl];\n };\n Selection.prototype.updateCellSelection = function (selectedCell, rowIndex, cellIndex) {\n if (!isNullOrUndefined(rowIndex)) {\n this.addRowCellIndex({ rowIndex: rowIndex, cellIndex: cellIndex });\n }\n selectedCell.classList.add('e-cellselectionbackground');\n if (selectedCell.classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(selectedCell, 'tr'), true);\n }\n this.addAttribute(selectedCell);\n };\n Selection.prototype.addAttribute = function (cell) {\n this.target = cell;\n if (!isNullOrUndefined(cell)) {\n cell.setAttribute('aria-selected', 'true');\n if (!this.preventFocus) {\n this.focus.onClick({ target: cell }, true);\n }\n }\n };\n Selection.prototype.updateCellProps = function (startIndex, endIndex) {\n this.prevCIdxs = startIndex;\n this.prevECIdxs = endIndex;\n this.isCellSelected = this.selectedRowCellIndexes.length && true;\n };\n Selection.prototype.addRowCellIndex = function (rowCellIndex) {\n var isRowAvail;\n var index;\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === rowCellIndex.rowIndex) {\n isRowAvail = true;\n index = i;\n break;\n }\n }\n if (isRowAvail) {\n if (this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.indexOf(rowCellIndex.cellIndex) < 0) {\n this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.push(rowCellIndex.cellIndex);\n }\n }\n else {\n this.selectedRowCellIndexes.push({ rowIndex: rowCellIndex.rowIndex, cellIndexes: [rowCellIndex.cellIndex] });\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearCellSelection = function () {\n if (this.isCellSelected) {\n var gObj = this.parent;\n var selectedCells = this.getSelectedCellsElement();\n var rowCell = this.selectedRowCellIndexes;\n var data = [];\n var cells = [];\n var foreignKeyData = [];\n var currentViewData = this.getCurrentBatchRecordChanges();\n var frzCols = gObj.isFrozenGrid();\n this.hideAutoFill();\n for (var i = 0, len = rowCell.length; i < len; i++) {\n data.push(currentViewData[rowCell[parseInt(i.toString(), 10)].rowIndex]);\n var rowObj = this.getRowObj(rowCell[parseInt(i.toString(), 10)].rowIndex);\n for (var j = 0, cLen = rowCell[parseInt(i.toString(), 10)].cellIndexes.length; j < cLen; j++) {\n if (frzCols) {\n var col = gObj.getColumnByIndex(rowCell[parseInt(i.toString(), 10)]\n .cellIndexes[parseInt(j.toString(), 10)]);\n cells.push(getCellByColAndRowIndex(this.parent, col, rowCell[parseInt(i.toString(), 10)].rowIndex, rowCell[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]));\n }\n else {\n if (rowObj.cells) {\n foreignKeyData.push(rowObj.cells[rowCell[parseInt(i.toString(), 10)]\n .cellIndexes[parseInt(j.toString(), 10)]].foreignKeyData);\n }\n cells.push(gObj.getCellFromIndex(rowCell[parseInt(i.toString(), 10)].rowIndex, rowCell[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]));\n }\n }\n }\n this.cellDeselect(events.cellDeselecting, rowCell, data, cells, foreignKeyData);\n if (this.isPreventCellSelect === true) {\n return;\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n selectedCells[parseInt(i.toString(), 10)].classList.remove('e-cellselectionbackground');\n selectedCells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n if (this.bdrElement) {\n this.showHideBorders('none');\n }\n this.selectedRowCellIndexes = [];\n this.isCellSelected = false;\n if (!this.isDragged && this.cellselected) {\n this.cellDeselect(events.cellDeselected, rowCell, data, cells, foreignKeyData);\n }\n }\n };\n Selection.prototype.getSelectedCellsElement = function () {\n var gObj = this.parent;\n var rows = gObj.getDataRows();\n var mRows;\n if (gObj.isFrozenGrid()) {\n mRows = gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, mRows);\n if (gObj.getFrozenMode() === literals.leftRight) {\n rows = gObj.addMovableRows(rows, gObj.getFrozenRightDataRows());\n }\n }\n var cells = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n cells = cells.concat([].slice.call(rows[parseInt(i.toString(), 10)].getElementsByClassName('e-cellselectionbackground')));\n }\n return cells;\n };\n Selection.prototype.mouseMoveHandler = function (e) {\n e.preventDefault();\n var gBRect = this.parent.element.getBoundingClientRect();\n var x1 = this.x;\n var y1 = this.y;\n var position = getPosition(e);\n var x2 = position.x - gBRect.left;\n var y2 = position.y - gBRect.top;\n var tmp;\n var target = closest(e.target, 'tr');\n this.isDragged = true;\n if (!this.isCellDrag) {\n if (!target) {\n target = closest(document.elementFromPoint(this.parent.element.offsetLeft + 2, e.clientY), 'tr');\n }\n if (x1 > x2) {\n tmp = x2;\n x2 = x1;\n x1 = tmp;\n }\n if (y1 > y2) {\n tmp = y2;\n y2 = y1;\n y1 = tmp;\n }\n this.element.style.left = x1 + 'px';\n this.element.style.top = y1 + 'px';\n this.element.style.width = x2 - x1 + 'px';\n this.element.style.height = y2 - y1 + 'px';\n }\n if (target && !e.ctrlKey && !e.shiftKey) {\n var rowIndex = parseInt(target.getAttribute(literals.dataRowIndex), 10);\n if (!this.isCellDrag) {\n this.hideAutoFill();\n this.selectRowsByRange(this.startDIndex, rowIndex);\n this.isRowDragSelected = true;\n }\n else {\n var td = parentsUntil(e.target, literals.rowCell);\n if (td) {\n this.startAFCell = this.startCell;\n this.endAFCell = parentsUntil(e.target, literals.rowCell);\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute(literals.dataColIndex), 10));\n }\n }\n }\n };\n Selection.prototype.selectLikeExcel = function (e, rowIndex, cellIndex) {\n if (!this.isAutoFillSel) {\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.drawBorders();\n }\n else { //Autofill\n this.showAFBorders();\n this.selectLikeAutoFill(e);\n }\n };\n Selection.prototype.drawBorders = function () {\n if (this.selectionSettings.cellSelectionMode === 'BoxWithBorder' && this.selectedRowCellIndexes.length && !this.parent.isEdit) {\n this.parent.element.classList.add('e-enabledboxbdr');\n if (!this.bdrElement) {\n this.createBorders();\n }\n this.positionBorders();\n }\n else {\n this.showHideBorders('none');\n }\n };\n Selection.prototype.isLastCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[cells.length - 1] === cell;\n };\n Selection.prototype.isLastRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[rows.length - 1];\n };\n Selection.prototype.isFirstRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[0];\n };\n Selection.prototype.isFirstCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[0] === cell;\n };\n Selection.prototype.setBorders = function (parentEle, border, bdrStr) {\n var cells = [].slice.call(parentEle.getElementsByClassName('e-cellselectionbackground')).\n filter(function (ele) { return ele.style.display === ''; });\n if (cells.length) {\n var isFrozen = this.parent.isFrozenGrid();\n var start = cells[0];\n var end = cells[cells.length - 1];\n var stOff = start.getBoundingClientRect();\n var endOff = end.getBoundingClientRect();\n var parentOff = start.offsetParent.getBoundingClientRect();\n var rowHeight = this.isLastRow(end) && (bdrStr === '1' || bdrStr === '2' || bdrStr === '5') ? 2 : 0;\n var topOffSet = this.parent.frozenRows && (bdrStr === '1' || bdrStr === '2') &&\n this.isFirstRow(start) ? 1.5 : 0;\n var leftOffset = isFrozen && (bdrStr === '2' || bdrStr === '4') && this.isFirstCell(start) ? 1 : 0;\n var rightOffset = ((this.parent.getFrozenMode() === 'Right' && (bdrStr === '1' || bdrStr === '3'))\n || (this.parent.getFrozenMode() === literals.leftRight && (bdrStr === '5' || bdrStr === '6')))\n && this.isFirstCell(start) ? 1 : 0;\n if (this.parent.enableRtl) {\n border.style.right = parentOff.right - stOff.right - leftOffset + 'px';\n border.style.width = stOff.right - endOff.left + leftOffset + 1 + 'px';\n }\n else {\n border.style.left = stOff.left - parentOff.left - leftOffset - rightOffset + 'px';\n border.style.width = endOff.right - stOff.left + leftOffset - rightOffset + 1 + 'px';\n }\n border.style.top = stOff.top - parentOff.top - topOffSet + 'px';\n border.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) - rowHeight + topOffSet + 'px' :\n endOff.height + topOffSet - rowHeight + 1 + 'px';\n this.selectDirection += bdrStr;\n }\n else {\n border.style.display = 'none';\n }\n };\n Selection.prototype.positionBorders = function () {\n this.updateStartEndCells();\n if (!this.startCell || !this.bdrElement || !this.selectedRowCellIndexes.length) {\n return;\n }\n this.selectDirection = '';\n this.showHideBorders('');\n this.setBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.contentModule.getMovableContent(), this.mcBdrElement, '2');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.contentModule.getFrozenRightContent(), this.frcBdrElement, '5');\n }\n }\n if (this.parent.frozenRows) {\n this.setBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.headerModule.getMovableHeader(), this.mhBdrElement, '4');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.headerModule.getFrozenRightHeader(), this.frhBdrElement, '6');\n }\n }\n }\n this.applyBorders(this.selectDirection);\n };\n /* eslint-enable */\n Selection.prototype.applyBothFrozenBorders = function (str) {\n var rtl = this.parent.enableRtl;\n switch (str.length) {\n case 6:\n {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = this.bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = this.top;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n break;\n case 4:\n {\n if (str.includes('1') && str.includes('2') && str.includes('3') && str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n }\n if (str.includes('2') && str.includes('4') && str.includes('5') && str.includes('6')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 3:\n {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mcBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mhBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n break;\n case 2:\n {\n if (str.includes('1')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('2')) {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.mhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('3')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.bdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('5')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.frozenRows) {\n this.frhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('6')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n this.mcBdrElement.style.borderWidth = this.all_border;\n this.frcBdrElement.style.borderWidth = this.all_border;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n this.mhBdrElement.style.borderWidth = this.all_border;\n this.frhBdrElement.style.borderWidth = this.all_border;\n }\n break;\n }\n };\n Selection.prototype.applyBorders = function (str) {\n var rtl = this.parent.enableRtl;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.applyBothFrozenBorders(str);\n }\n else {\n switch (str.length) {\n case 4:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n }\n else {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 2:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n }\n }\n else {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = this.all_border;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = this.all_border;\n }\n }\n break;\n }\n }\n };\n Selection.prototype.createBorders = function () {\n if (!this.bdrElement) {\n this.bdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_bdr',\n styles: 'width: 2px; border-width: 0;'\n }));\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement = this.parent.contentModule.getMovableContent().appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_mcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement = this.parent.contentModule.getFrozenRightContent().appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_frcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_fhbdr', styles: 'height: 2px;' }));\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement = this.parent.headerModule.getMovableHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_mhbdr', styles: 'height: 2px;' }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement = this.parent.headerModule.getFrozenRightHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_frhbdr', styles: 'height: 2px;' }));\n }\n }\n }\n };\n Selection.prototype.showHideBorders = function (display) {\n if (this.bdrElement) {\n this.bdrElement.style.display = display;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement.style.display = display;\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.display = display;\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement.style.display = display;\n }\n }\n }\n };\n Selection.prototype.drawAFBorders = function () {\n if (!this.bdrAFBottom) {\n this.createAFBorders();\n }\n this.positionAFBorders();\n };\n Selection.prototype.positionAFBorders = function () {\n if (!this.startCell || !this.bdrAFLeft) {\n return;\n }\n var stOff = this.startAFCell.getBoundingClientRect();\n var endOff = this.endAFCell.getBoundingClientRect();\n var top = endOff.top - stOff.top > 0 ? 1 : 0;\n var firstCellTop = endOff.top - stOff.top >= 0 && (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, 'e-frozencontent')) && this.isFirstRow(this.startAFCell) ? 1.5 : 0;\n var firstCellLeft = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) && this.isFirstCell(this.startAFCell) ? 1 : 0;\n var rowHeight = this.isLastRow(this.endAFCell) && (parentsUntil(this.endAFCell, literals.movableContent) ||\n parentsUntil(this.endAFCell, 'e-frozencontent')) ? 2 : 0;\n var parentOff = this.startAFCell.offsetParent.getBoundingClientRect();\n var parentRect = this.parent.element.getBoundingClientRect();\n var sTop = this.startAFCell.offsetParent.parentElement.scrollTop;\n var sLeft = this.startAFCell.offsetParent.parentElement.scrollLeft;\n var scrollTop = sTop - this.startAFCell.offsetTop;\n var scrollLeft = sLeft - this.startAFCell.offsetLeft;\n var totalHeight = this.parent.element.clientHeight;\n var totalWidth = this.parent.element.clientWidth;\n scrollTop = scrollTop > 0 ? Math.floor(scrollTop) - 1 : 0;\n scrollLeft = scrollLeft > 0 ? scrollLeft : 0;\n var left = stOff.left - parentRect.left;\n if (!this.parent.enableRtl) {\n this.bdrAFLeft.style.left = left - firstCellLeft + scrollLeft - 1 + 'px';\n this.bdrAFRight.style.left = endOff.left - parentRect.left - 2 + endOff.width + 'px';\n this.bdrAFRight.style.width = totalWidth <= parseInt(this.bdrAFRight.style.left, 10) ? '0px' : '2px';\n this.bdrAFTop.style.left = left + scrollLeft - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFRight.style.left, 10) - parseInt(this.bdrAFLeft.style.left, 10)\n - firstCellLeft + 1 + 'px';\n if (totalWidth <= (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10))) {\n var leftRemove = (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10)) - totalWidth;\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) - leftRemove + 'px';\n }\n }\n else {\n var scrolloffSet = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) ? stOff.right -\n this.startAFCell.offsetParent.parentElement.getBoundingClientRect().width -\n parentRect.left : 0;\n this.bdrAFLeft.style.right = parentRect.right - endOff.right - 2 + endOff.width + 'px';\n this.bdrAFLeft.style.width = totalWidth <= parseInt(this.bdrAFLeft.style.right, 10) ? '0px' : '2px';\n this.bdrAFRight.style.right = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1 + 'px';\n this.bdrAFTop.style.left = endOff.left - parentRect.left - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFLeft.style.right, 10) - parseInt(this.bdrAFRight.style.right, 10)\n - firstCellLeft + 1 + 'px';\n if (parseInt(this.bdrAFTop.style.left, 10) < 0) {\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10) + 'px';\n this.bdrAFTop.style.left = '0px';\n }\n }\n this.bdrAFLeft.style.top = stOff.top - parentRect.top - firstCellTop + scrollTop + 'px';\n this.bdrAFLeft.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) + firstCellTop - rowHeight - scrollTop + 'px' :\n endOff.height + firstCellTop - rowHeight - scrollTop + 'px';\n this.bdrAFRight.style.top = this.bdrAFLeft.style.top;\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n this.bdrAFTop.style.top = this.bdrAFRight.style.top;\n this.bdrAFBottom.style.left = this.bdrAFTop.style.left;\n this.bdrAFBottom.style.top = parseFloat(this.bdrAFLeft.style.top) + parseFloat(this.bdrAFLeft.style.height) - top - 1 + 'px';\n this.bdrAFBottom.style.width = totalHeight <= parseFloat(this.bdrAFBottom.style.top) ? '0px' : this.bdrAFTop.style.width;\n if (totalHeight <= (parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10))) {\n var topRemove = parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10) - totalHeight;\n this.bdrAFLeft.style.height = parseInt(this.bdrAFLeft.style.height, 10) - topRemove + 'px';\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n }\n };\n Selection.prototype.createAFBorders = function () {\n if (!this.bdrAFLeft) {\n this.bdrAFLeft = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafleft', styles: 'width: 2px;' }));\n this.bdrAFRight = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafright', styles: 'width: 2px;' }));\n this.bdrAFBottom = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafbottom', styles: 'height: 2px;' }));\n this.bdrAFTop = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdraftop', styles: 'height: 2px;' }));\n }\n };\n Selection.prototype.showAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = '';\n this.bdrAFRight.style.display = '';\n this.bdrAFBottom.style.display = '';\n this.bdrAFTop.style.display = '';\n }\n };\n Selection.prototype.hideAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = 'none';\n this.bdrAFRight.style.display = 'none';\n this.bdrAFBottom.style.display = 'none';\n this.bdrAFTop.style.display = 'none';\n }\n };\n Selection.prototype.updateValue = function (rIdx, cIdx, cell) {\n var args = this.createBeforeAutoFill(rIdx, cIdx, cell);\n if (!args.cancel) {\n var col = this.parent.getColumnByIndex(cIdx);\n if (this.parent.editModule && cell) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.value));\n }\n else {\n this.parent.editModule.updateCell(rIdx, col.field, args.value);\n }\n }\n }\n };\n Selection.prototype.createBeforeAutoFill = function (rowIndex, colIndex, cell) {\n var col = this.parent.getColumnByIndex(colIndex);\n var args = {\n column: col,\n value: cell.innerText\n };\n this.parent.trigger(events.beforeAutoFill, args);\n return args;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.getAutoFillCells = function (rowIndex, startCellIdx) {\n var cls = '.e-cellselectionbackground';\n var cells = [].slice.call(this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll(cls));\n if (this.parent.isFrozenGrid()) {\n cells = cells.concat([].slice.call(this.parent.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll(cls)));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n cells = cells.concat([].slice.call(this.parent.getFrozenRightDataRows()[parseInt(rowIndex.toString(), 10)]\n .querySelectorAll(cls)));\n }\n }\n return cells;\n };\n Selection.prototype.selectLikeAutoFill = function (e, isApply) {\n var startrowIdx = parseInt(parentsUntil(this.startAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var startCellIdx = parseInt(this.startAFCell.getAttribute(literals.dataColIndex), 10);\n var endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n var rowLen = this.selectedRowCellIndexes.length - 1;\n var colLen = this.selectedRowCellIndexes[0].cellIndexes.length - 1;\n switch (true) { //direction\n case !isApply && this.endAFCell.classList.contains('e-cellselectionbackground') &&\n !!parentsUntil(e.target, literals.rowCell):\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, startCellIdx);\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, startCellIdx + colLen);\n this.drawAFBorders();\n break;\n case this.autoFillRLselection && startCellIdx + colLen < endCellIdx && //right\n endCellIdx - startCellIdx - colLen + 1 > endrowIdx - startrowIdx - rowLen // right bottom\n && endCellIdx - startCellIdx - colLen + 1 > startrowIdx - endrowIdx: //right top\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, endCellIdx);\n endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var cellIdx = parseInt(this.endCell.getAttribute(literals.dataColIndex), 10);\n for (var i = startrowIdx; i <= endrowIdx; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n var c = 0;\n for (var j = cellIdx + 1; j <= endCellIdx; j++) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: this.startCellIndex }, { rowIndex: endrowIdx, cellIndex: endCellIdx });\n }\n break;\n case this.autoFillRLselection && startCellIdx > endCellIdx && // left\n startCellIdx - endCellIdx + 1 > endrowIdx - startrowIdx - rowLen && //left top\n startCellIdx - endCellIdx + 1 > startrowIdx - endrowIdx: // left bottom\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, endCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n for (var i = startrowIdx; i <= startrowIdx + rowLen; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n cells.reverse();\n var c = 0;\n for (var j = this.startCellIndex - 1; j >= endCellIdx; j--) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: endCellIdx }, { rowIndex: startrowIdx + rowLen, cellIndex: this.startCellIndex + colLen });\n }\n break;\n case startrowIdx > endrowIdx: //up\n this.startAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = trIdx;\n for (var i = startrowIdx - 1; i >= endrowIdx; i--) {\n if (r === this.startIndex - 1) {\n r = trIdx;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n var c = 0;\n r--;\n for (var j = this.startCellIndex; j <= this.startCellIndex + colLen; j++) {\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: endrowIdx, cellIndex: startCellIdx + colLen }, { rowIndex: startrowIdx + rowLen, cellIndex: startCellIdx });\n }\n break;\n default: //down\n this.endAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx + colLen);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = this.startIndex;\n for (var i = trIdx + 1; i <= endrowIdx; i++) {\n if (r === trIdx + 1) {\n r = this.startIndex;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n r++;\n var c = 0;\n for (var m = this.startCellIndex; m <= this.startCellIndex + colLen; m++) {\n this.updateValue(i, m, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: trIdx - rowLen, cellIndex: startCellIdx }, { rowIndex: endrowIdx, cellIndex: startCellIdx + colLen });\n }\n break;\n }\n };\n Selection.prototype.mouseUpHandler = function (e) {\n document.body.classList.remove('e-disableuserselect');\n if (this.element) {\n remove(this.element);\n }\n if (this.isDragged && this.selectedRowCellIndexes.length === 1 && this.selectedRowCellIndexes[0].cellIndexes.length === 1) {\n this.mUPTarget = parentsUntil(e.target, literals.rowCell);\n }\n else {\n this.mUPTarget = null;\n }\n var closeRowCell = closest(e.target, '.e-rowcell');\n if (this.isDragged && !this.isAutoFillSel && this.selectionSettings.mode === 'Cell' &&\n closeRowCell && closeRowCell.classList.contains(literals.rowCell)) {\n var rowIndex = parseInt(closeRowCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var cellIndex = parseInt(closeRowCell.getAttribute(literals.dataColIndex), 10);\n this.isDragged = false;\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isDragged = false;\n this.updateAutoFillPosition();\n if (this.isAutoFillSel) {\n var lastCell = parentsUntil(e.target, literals.rowCell);\n this.endAFCell = lastCell ? lastCell : this.endCell === this.endAFCell ? this.startAFCell : this.endAFCell;\n this.startAFCell = this.startCell;\n this.updateStartCellsIndex();\n this.selectLikeAutoFill(e, true);\n this.updateAutoFillPosition();\n this.hideAFBorders();\n this.positionBorders();\n this.isAutoFillSel = false;\n }\n EventHandler.remove(this.parent.getContent(), 'mousemove', this.mouseMoveHandler);\n if (this.parent.frozenRows) {\n EventHandler.remove(this.parent.getHeaderContent(), 'mousemove', this.mouseMoveHandler);\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n };\n Selection.prototype.hideAutoFill = function () {\n if (this.autofill) {\n this.autofill.style.display = 'none';\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.updateAutoFillPosition = function () {\n if (this.parent.enableAutoFill && !this.parent.isEdit &&\n this.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()\n && this.selectedRowCellIndexes.length) {\n var index = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var rindex = parseInt(this.target.getAttribute('index'), 10);\n var rowIndex = this.selectedRowCellIndexes[this.selectedRowCellIndexes.length - 1].rowIndex;\n var cells = this.getAutoFillCells(rowIndex, index).filter(function (ele) { return ele.style.display === ''; });\n var col = this.parent.getColumnByIndex(index);\n var isFrozenCol = col.getFreezeTableName() === 'movable';\n var isFrozenRow = rindex < this.parent.frozenRows;\n var isFrozenRight = this.parent.getFrozenMode() === literals.leftRight\n && col.getFreezeTableName() === literals.frozenRight;\n if (!select('#' + this.parent.element.id + '_autofill', parentsUntil(this.target, literals.table))) {\n if (select('#' + this.parent.element.id + '_autofill', this.parent.element)) {\n select('#' + this.parent.element.id + '_autofill', this.parent.element).remove();\n }\n this.autofill = createElement('div', { className: 'e-autofill', id: this.parent.element.id + '_autofill' });\n this.autofill.style.display = 'none';\n if (!isFrozenRow) {\n if (!isFrozenCol) {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.contentModule.getMovableContent().appendChild(this.autofill);\n }\n }\n else {\n if (!isFrozenCol) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.headerModule.getMovableHeader().appendChild(this.autofill);\n }\n }\n if (isFrozenRight) {\n if (isFrozenRow) {\n this.parent.getFrozenRightHeader().appendChild(this.autofill);\n }\n else {\n this.parent.getFrozenRightContent().appendChild(this.autofill);\n }\n }\n }\n var cell = cells[cells.length - 1];\n if (cell && cell.offsetParent) {\n var clientRect = cell.getBoundingClientRect();\n var parentOff = cell.offsetParent.getBoundingClientRect();\n var colWidth = this.isLastCell(cell) ? 4 : 0;\n var rowHeight = this.isLastRow(cell) ? 3 : 0;\n if (!this.parent.enableRtl) {\n this.autofill.style.left = clientRect.left - parentOff.left + clientRect.width - 4 - colWidth + 'px';\n }\n else {\n this.autofill.style.right = parentOff.right - clientRect.right + clientRect.width - 4 - colWidth + 'px';\n }\n this.autofill.style.top = clientRect.top - parentOff.top + clientRect.height - 5 - rowHeight + 'px';\n }\n this.autofill.style.display = '';\n }\n else {\n this.hideAutoFill();\n }\n };\n Selection.prototype.mouseDownHandler = function (e) {\n this.mouseButton = e.button;\n var target = e.target;\n var gObj = this.parent;\n var isDrag;\n var gridElement = parentsUntil(target, 'e-grid');\n if (gridElement && gridElement.id !== gObj.element.id || parentsUntil(target, literals.headerContent) && !this.parent.frozenRows ||\n parentsUntil(target, 'e-editedbatchcell') || parentsUntil(target, literals.editedRow)) {\n return;\n }\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (parentsUntil(target, literals.rowCell) && !e.shiftKey && !e.ctrlKey) {\n if (gObj.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()) {\n this.isCellDrag = true;\n isDrag = true;\n }\n else if (gObj.allowRowDragAndDrop && !gObj.isEdit && !this.parent.selectionSettings.checkboxOnly) {\n this.isRowDragSelected = false;\n if (!this.isRowType() || this.isSingleSel() || closest(target, 'td').classList.contains('e-selectionbackground')) {\n this.isDragged = false;\n return;\n }\n isDrag = true;\n this.element = this.parent.createElement('div', { className: 'e-griddragarea' });\n gObj.getContent().appendChild(this.element);\n }\n if (isDrag) {\n this.enableDrag(e, true);\n }\n }\n this.updateStartEndCells();\n if (target.classList.contains('e-autofill') || target.classList.contains('e-xlsel')) {\n this.isCellDrag = true;\n this.isAutoFillSel = true;\n this.enableDrag(e);\n }\n };\n Selection.prototype.updateStartEndCells = function () {\n var cells = [].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground'));\n this.startCell = cells[0];\n this.endCell = cells[cells.length - 1];\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.updateStartCellsIndex = function () {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.enableDrag = function (e, isUpdate) {\n var gObj = this.parent;\n if (isUpdate) {\n var tr = closest(e.target, 'tr');\n this.startDIndex = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n document.body.classList.add('e-disableuserselect');\n var gBRect = gObj.element.getBoundingClientRect();\n var postion = getPosition(e);\n this.x = postion.x - gBRect.left;\n this.y = postion.y - gBRect.top;\n EventHandler.add(gObj.getContent(), 'mousemove', this.mouseMoveHandler, this);\n if (this.parent.frozenRows) {\n EventHandler.add(gObj.getHeaderContent(), 'mousemove', this.mouseMoveHandler, this);\n }\n EventHandler.add(document, 'mouseup', this.mouseUpHandler, this);\n };\n Selection.prototype.clearSelAfterRefresh = function (e) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfiniteScroll) {\n this.clearSelection();\n }\n if ((e.requestType === 'virtualscroll' || isInfiniteScroll) && this.parent.isPersistSelection && this.isPartialSelection\n && this.isHdrSelectAllClicked) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n var indexes = [];\n this.selectedRowState = {};\n this.persistSelectedData = [];\n for (var i = 0; i < rowObj.length; i++) {\n indexes.push(rowObj[parseInt(i.toString(), 10)].index);\n var pkValue = this.getPkValue(this.primaryKey, rowObj[parseInt(i.toString(), 10)].data);\n this.selectedRowState[\"\" + pkValue] = true;\n this.persistSelectedData.push(rowObj[parseInt(i.toString(), 10)].data);\n }\n this.selectedRowIndexes = indexes;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.uiUpdate, handler: this.enableAfterRender },\n { event: events.initialEnd, handler: this.initializeSelection },\n { event: events.rowSelectionComplete, handler: this.onActionComplete },\n { event: events.cellSelectionComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.beforeFragAppend, handler: this.clearSelAfterRefresh },\n { event: events.columnPositionChanged, handler: this.columnPositionChanged },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.rowsRemoved, handler: this.rowsRemoved },\n { event: events.headerRefreshed, handler: this.refreshHeader },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.addEventListener_checkbox();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.removeEventListener_checkbox();\n };\n Selection.prototype.wireEvents = function () {\n this.isMacOS = navigator.userAgent.indexOf('Mac OS') !== -1;\n if (this.isMacOS) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.parent.element, 'keyup', this.keyUpHandler, this);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n }\n }\n };\n Selection.prototype.unWireEvents = function () {\n if (this.isMacOS) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.parent.element, 'keyup', this.keyUpHandler);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n }\n }\n };\n Selection.prototype.columnPositionChanged = function () {\n if (!this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.refreshHeader = function () {\n this.setCheckAllState();\n };\n Selection.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, e.records[parseInt(i.toString(), 10)]);\n delete (this.selectedRowState[\"\" + pkValue]);\n --this.totalRecordsCount;\n }\n this.setCheckAllState();\n };\n Selection.prototype.beforeFragAppend = function (e) {\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.getCheckAllBox = function () {\n return this.parent.getHeaderContent().querySelector('.e-checkselectall');\n };\n Selection.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.initPerisistSelection();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.render = function (e) {\n EventHandler.add(this.parent.getContent(), 'mousedown', this.mouseDownHandler, this);\n EventHandler.add(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler, this);\n };\n Selection.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n if (!isNullOrUndefined(e.properties.type) && this.selectionSettings.type === 'Single') {\n if (this.selectedRowCellIndexes.length > 1) {\n this.clearCellSelection();\n this.prevCIdxs = undefined;\n }\n if (this.selectedRowIndexes.length > 1) {\n this.clearRowSelection();\n this.prevRowIndex = undefined;\n }\n if (this.selectedColumnsIndexes.length > 1) {\n this.clearColumnSelection();\n this.prevColIndex = undefined;\n }\n this.enableSelectMultiTouch = false;\n this.hidePopUp();\n }\n if (!isNullOrUndefined(e.properties.mode) ||\n !isNullOrUndefined(e.properties.cellSelectionMode)) {\n this.clearSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevColIndex = undefined;\n }\n this.isPersisted = true;\n this.checkBoxSelectionChanged();\n this.isPersisted = false;\n if (!this.parent.isCheckBoxSelection) {\n this.initPerisistSelection();\n }\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length) {\n gObj.isCheckBoxSelection = !(this.selectionSettings.checkboxMode === 'ResetOnRowClick');\n }\n this.drawBorders();\n };\n Selection.prototype.hidePopUp = function () {\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-rowselect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.initialEnd = function (e) {\n var isFrozen = this.parent.isFrozenGrid();\n var isLeftRightFrozen = this.parent.getFrozenMode() === literals.leftRight;\n if ((!isFrozen || (isFrozen && (!isLeftRightFrozen && !e.args.isFrozen)\n || (isLeftRightFrozen && e.args.renderFrozenRightContent))) && !this.selectedRowIndexes.length) {\n this.parent.off(events.contentReady, this.initialEnd);\n this.selectRow(this.parent.selectedRowIndex);\n }\n };\n Selection.prototype.checkBoxSelectionChanged = function () {\n var gobj = this.parent;\n gobj.off(events.contentReady, this.checkBoxSelectionChanged);\n var checkboxColumn = gobj.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length > 0) {\n gobj.isCheckBoxSelection = true;\n this.chkField = checkboxColumn[0].field;\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (isNullOrUndefined(this.totalRecordsCount)) {\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.isSingleSel()) {\n gobj.selectionSettings.type = 'Multiple';\n gobj.dataBind();\n }\n else {\n this.initPerisistSelection();\n }\n }\n if (!gobj.isCheckBoxSelection && !this.isPersisted) {\n this.chkField = null;\n this.initPerisistSelection();\n }\n };\n Selection.prototype.initPerisistSelection = function () {\n var gobj = this.parent;\n if (this.parent.selectionSettings.persistSelection && this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = true;\n this.ensureCheckboxFieldSelection();\n }\n else if (this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = false;\n this.ensureCheckboxFieldSelection();\n }\n else {\n gobj.isPersistSelection = false;\n this.selectedRowState = {};\n }\n };\n Selection.prototype.ensureCheckboxFieldSelection = function () {\n var gobj = this.parent;\n this.primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n if (!gobj.enableVirtualization && this.chkField\n && ((gobj.isPersistSelection && Object.keys(this.selectedRowState).length === 0) ||\n !gobj.isPersistSelection)) {\n var data = this.parent.getDataModule();\n var query = new Query().where(this.chkField, 'equal', true);\n if (!query.params) {\n query.params = this.parent.query.params;\n }\n var dataManager = data.getData({}, query);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n this.parent.showSpinner();\n dataManager.then(function (e) {\n proxy_1.dataSuccess(e.result);\n proxy_1.refreshPersistSelection();\n proxy_1.parent.hideSpinner();\n });\n }\n };\n Selection.prototype.dataSuccess = function (res) {\n var data = (this.parent.getDataModule().isRemote()) ? res['result'] : res;\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(this.selectedRowState[\"\" + pkValue]) && data[parseInt(i.toString(), 10)][this.chkField]) {\n this.selectedRowState[\"\" + pkValue] = data[parseInt(i.toString(), 10)][this.chkField];\n }\n }\n this.persistSelectedData = data;\n };\n Selection.prototype.setRowSelection = function (state) {\n if (!(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))) {\n if (state) {\n if (this.isPartialSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_1 = rowObj; _i < rowObj_1.length; _i++) {\n var row = rowObj_1[_i];\n this.selectedRowState[this.getPkValue(this.primaryKey, row.data)] = true;\n }\n }\n else {\n var selectedData = this.isPartialSelection ? this.parent.partialSelectedRecords : this.getData();\n if (this.parent.groupSettings.columns.length) {\n for (var _a = 0, _b = this.isPartialSelection ? selectedData : selectedData.records; _a < _b.length; _a++) {\n var data = _b[_a];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n else {\n for (var _c = 0, selectedData_1 = selectedData; _c < selectedData_1.length; _c++) {\n var data = selectedData_1[_c];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n }\n // (this.getData()).forEach(function (data) {\n // this.selectedRowState[data[this.primaryKey]] = true;\n // })\n }\n else {\n if (state) {\n var selectedStateKeys = Object.keys(this.selectedRowState);\n var unSelectedRowStateKeys = Object.keys(this.unSelectedRowState);\n if (!this.isCheckboxReset) {\n for (var _d = 0, _e = this.parent.currentViewData; _d < _e.length; _d++) {\n var data = _e[_d];\n if (!isNullOrUndefined(data[this.primaryKey])) {\n var key = data[this.primaryKey].toString();\n if (selectedStateKeys.indexOf(key) === -1 && unSelectedRowStateKeys.indexOf(key) === -1) {\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.rmtHdrChkbxClicked = false;\n }\n }\n };\n Selection.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n Selection.prototype.getAvailableSelectedData = function () {\n var filteredSearchedSelectedData = new DataManager(this.persistSelectedData)\n .executeLocal(this.parent.getDataModule().generateQuery(true));\n if (this.parent.groupSettings.columns.length && filteredSearchedSelectedData &&\n filteredSearchedSelectedData.records) {\n filteredSearchedSelectedData = filteredSearchedSelectedData.records.slice();\n }\n return filteredSearchedSelectedData;\n };\n Selection.prototype.refreshPersistSelection = function () {\n var rows = this.parent.getRows();\n if (this.parent.isCheckBoxSelection && this.parent.isFrozenGrid()) {\n var mtbody = this.parent.getMovableContentTbody();\n if (mtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getMovableRows();\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frtbody = this.parent.getFrozenRightContentTbody();\n if (frtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getFrozenRightRows();\n }\n }\n }\n this.totalRecordsCount = this.parent.getCurrentViewRecords().length;\n if (this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (!isNullOrUndefined(rows) && rows.length > 0 && (this.parent.isPersistSelection || this.chkField)) {\n var indexes = [];\n for (var j = 0; j < rows.length; j++) {\n var rowObj = this.getRowObj(rows[parseInt(j.toString(), 10)]);\n var pKey = rowObj ? rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null : null;\n if (pKey === null) {\n return;\n }\n if (this.isPartialSelection && !rowObj.isSelectable) {\n continue;\n }\n var checkState = void 0;\n var chkBox = rows[parseInt(j.toString(), 10)].querySelector('.e-checkselect');\n if (this.selectedRowState[\"\" + pKey] || (this.parent.checkAllRows === 'Check' && this.selectedRowState[\"\" + pKey] &&\n this.totalRecordsCount === Object.keys(this.selectedRowState).length && this.chkAllCollec.indexOf(pKey) < 0)\n || (this.parent.checkAllRows === 'Uncheck' && this.chkAllCollec.indexOf(pKey) > 0 && !this.parent.selectedRowIndex)\n || (this.parent.checkAllRows === 'Intermediate' && !isNullOrUndefined(this.chkField) && rowObj.data[this.chkField])) {\n indexes.push(parseInt(rows[parseInt(j.toString(), 10)].getAttribute(literals.dataRowIndex), 10));\n checkState = true;\n }\n else {\n checkState = false;\n if (this.checkedTarget !== chkBox && this.parent.isCheckBoxSelection && chkBox) {\n removeAddCboxClasses(chkBox.nextElementSibling, checkState);\n }\n }\n this.updatePersistCollection(rows[parseInt(j.toString(), 10)], checkState);\n }\n if (this.isSingleSel() && indexes.length > 0) {\n this.selectRow(indexes[0], true);\n }\n else {\n this.selectRows(indexes);\n }\n }\n if ((this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') && this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n };\n Selection.prototype.actionBegin = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n var editChkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n var row = closest(editChkBox, '.' + literals.editedRow);\n if (row) {\n if (this.parent.editSettings.mode === 'Dialog') {\n row = this.parent.element.querySelector('.e-dlgeditrow');\n }\n var rowObj = this.getRowObj(row);\n if (!rowObj) {\n return;\n }\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = editChkBox.checked;\n }\n else {\n this.isCheckedOnAdd = editChkBox.checked;\n }\n }\n }\n if (this.parent.isPersistSelection && this.isPartialSelection) {\n if (e.requestType === 'paging' && (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.selectedRowIndexes = [];\n }\n if (e.requestType === 'filtering' || e.requestType === 'searching') {\n this.parent.partialSelectedRecords = [];\n this.parent.disableSelectedRecords = [];\n }\n }\n };\n Selection.prototype.actionComplete = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n if (e.action === 'add') {\n if (this.isCheckedOnAdd) {\n var rowObj = this.parent.getRowObjectFromUID(this.parent.getRows()[e.selectedRow].getAttribute('data-uid'));\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = this.isCheckedOnAdd;\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n }\n this.refreshPersistSelection();\n }\n if (e.requestType === 'delete' && this.parent.isPersistSelection) {\n var records = e.data;\n var data = records.slice();\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(pkValue)) {\n this.updatePersistDelete(pkValue, this.isPartialSelection);\n }\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (e.requestType === 'paging') {\n if (this.parent.isPersistSelection && this.isPartialSelection && this.isHdrSelectAllClicked) {\n var rows = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isSelectable) {\n indexes.push(rows[parseInt(i.toString(), 10)].index);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n }\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n }\n };\n Selection.prototype.onDataBound = function () {\n if (!this.parent.enableVirtualization && this.parent.isPersistSelection) {\n if (this.selectedRecords.length) {\n this.isPrevRowSelection = true;\n }\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.rmtHdrChkbxClicked) {\n if (this.parent.checkAllRows === 'Intermediate') {\n this.setRowSelection(true);\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n }\n }\n if (this.parent.enableVirtualization) {\n this.setCheckAllState();\n }\n if (this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n this.initialRowSelection = this.isRowType() && this.parent.element.querySelectorAll('.e-selectionbackground') &&\n this.parent.getSelectedRows().length ? true : false;\n if (this.parent.isCheckBoxSelection && !this.initialRowSelection) {\n var totalRecords = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < totalRecords.length; i++) {\n if (totalRecords[parseInt(i.toString(), 10)].isSelected) {\n indexes.push(i);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n this.initialRowSelection = true;\n }\n };\n Selection.prototype.updatePersistSelectedData = function (checkState) {\n if (this.parent.isPersistSelection) {\n var rows = this.parent.getRows();\n for (var i = 0; i < rows.length; i++) {\n this.updatePersistCollection(rows[parseInt(i.toString(), 10)], checkState);\n }\n if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n this.persistSelectedData = (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n ? this.persistSelectedData : [];\n }\n else if (this.parent.checkAllRows === 'Check') {\n this.setRowSelection(true);\n this.persistSelectedData = !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n && !this.isPartialSelection ?\n this.parent.groupSettings.columns.length ? this.getData().records.slice() :\n this.getData().slice() : this.persistSelectedData;\n }\n }\n };\n Selection.prototype.checkSelectAllAction = function (checkState) {\n var cRenderer = this.getRenderer();\n var editForm = this.parent.element.querySelector('.e-gridform');\n this.checkedTarget = this.getCheckAllBox();\n if (checkState && this.getCurrentBatchRecordChanges().length) {\n this.parent.checkAllRows = 'Check';\n this.updatePersistSelectedData(checkState);\n this.selectRowsByRange(cRenderer.getVirtualRowIndex(0), cRenderer.getVirtualRowIndex(this.getCurrentBatchRecordChanges().length - 1));\n }\n else {\n this.parent.checkAllRows = 'Uncheck';\n this.updatePersistSelectedData(checkState);\n this.clearSelection();\n }\n this.chkAllCollec = [];\n if (!isNullOrUndefined(editForm)) {\n var editChkBox = editForm.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n removeAddCboxClasses(editChkBox.nextElementSibling, checkState);\n }\n }\n };\n Selection.prototype.checkSelectAll = function (checkBox) {\n var _this = this;\n var stateStr = this.getCheckAllStatus(checkBox);\n var state = stateStr === 'Check';\n this.isHeaderCheckboxClicked = true;\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && ((stateStr === 'Uncheck' || this.isCheckboxReset) ||\n (this.parent.getDataModule().isRemote() && stateStr === 'Intermediate' && this.parent.isPersistSelection))) {\n this.rmtHdrChkbxClicked = true;\n }\n else {\n this.rmtHdrChkbxClicked = false;\n }\n if (this.rmtHdrChkbxClicked && this.isCheckboxReset) {\n this.unSelectedRowState = {};\n }\n this.isCheckboxReset = false;\n if (stateStr === 'Intermediate') {\n if (!this.chkField && !this.parent.isPersistSelection) {\n state = this.getCurrentBatchRecordChanges().some(function (data) {\n return _this.getPkValue(_this.primaryKey, data) in _this.selectedRowState;\n });\n }\n if (this.parent.getDataModule().isRemote() && this.parent.isPersistSelection) {\n for (var i = 0; i < this.getCurrentBatchRecordChanges().length; i++) {\n if (Object.keys(this.selectedRowState).includes((this.getPkValue(this.primaryKey, this.getCurrentBatchRecordChanges()[\"\" + i])).toString())) {\n state = true;\n }\n else {\n state = false;\n break;\n }\n }\n }\n }\n if (this.parent.isPersistSelection && this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n this.checkSelectAllAction(!state);\n this.target = null;\n if (this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n this.updateSelectedRowIndexes();\n }\n this.triggerChkChangeEvent(checkBox, !state);\n };\n Selection.prototype.getCheckAllStatus = function (ele) {\n var classes = ele ? ele.nextElementSibling.classList :\n this.getCheckAllBox().nextElementSibling.classList;\n var status;\n if (classes.contains('e-check')) {\n status = 'Check';\n }\n else if (classes.contains('e-uncheck')) {\n status = 'Uncheck';\n }\n else if (classes.contains('e-stop')) {\n status = 'Intermediate';\n }\n else {\n status = 'None';\n }\n return status;\n };\n Selection.prototype.checkSelect = function (checkBox) {\n var target = closest(this.checkedTarget, '.' + literals.rowCell);\n var gObj = this.parent;\n this.isMultiCtrlRequest = true;\n var rIndex = 0;\n this.isHeaderCheckboxClicked = false;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0 &&\n this.parent.editSettings.newRowPosition === 'Top') {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n this.isMultiCtrlRequest = false;\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'));\n };\n Selection.prototype.moveIntoUncheckCollection = function (row) {\n if (this.parent.checkAllRows === 'Check' || this.parent.checkAllRows === 'Uncheck') {\n var rowObj = this.getRowObj(row);\n var pKey = rowObj && rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (!pKey) {\n return;\n }\n if (this.chkAllCollec.indexOf(pKey) < 0) {\n this.chkAllCollec.push(pKey);\n }\n else {\n this.chkAllCollec.splice(this.chkAllCollec.indexOf(pKey), 1);\n }\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState) {\n this.parent.trigger(events.checkBoxChange, {\n checked: checkState, selectedRowIndexes: this.parent.getSelectedRowIndexes(),\n target: checkBox\n });\n if (!this.parent.isEdit) {\n this.checkedTarget = null;\n }\n };\n Selection.prototype.updateSelectedRowIndexes = function () {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) &&\n this.isPartialSelection && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && this.parent.selectionSettings.persistSelection) {\n if (this.parent.checkAllRows !== 'Uncheck') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_2 = rowObj; _i < rowObj_2.length; _i++) {\n var row = rowObj_2[_i];\n this.selectedRowIndexes.push(row.index);\n }\n }\n }\n };\n Selection.prototype.updateSelectedRowIndex = function (index) {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.isPartialSelection) {\n if (this.parent.checkAllRows === 'Check') {\n this.selectedRowIndexes = [];\n var dataLength = this.getData().length;\n for (var data = 0; data < dataLength; data++) {\n this.selectedRowIndexes.push(data);\n }\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.selectedRowIndexes = [];\n }\n else {\n var row = this.parent.getRowByIndex(index);\n if (index && row && row.getAttribute('aria-selected') === 'false') {\n var selectedVal = this.selectedRowIndexes.indexOf(index);\n this.selectedRowIndexes.splice(selectedVal, 1);\n }\n }\n }\n };\n Selection.prototype.isAllSelected = function (count) {\n if (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) {\n return this.getAvailableSelectedData().length === (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling\n ? this.parent.totalDataRecordsCount : this.totalRecordsCount);\n }\n else {\n if (this.isPartialSelection) {\n if (this.parent.allowPaging && this.parent.pageSettings.pageSize < this.parent.pageSettings.totalRecordsCount) {\n var data = this.parent.partialSelectedRecords;\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n else {\n return this.isSelectAllRowCount(count);\n }\n }\n else {\n var data = this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n }\n };\n Selection.prototype.someDataSelected = function () {\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && (this.parent.searchSettings.key.length || this.parent.filterSettings.columns.length)) {\n var filteredSearchedSelectedData = this.getAvailableSelectedData();\n for (var i = 0; i < filteredSearchedSelectedData.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, filteredSearchedSelectedData[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n }\n var data = this.isPartialSelection ? this.parent.partialSelectedRecords\n : (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ? [] : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n };\n Selection.prototype.setCheckAllState = function (index, isInteraction) {\n if (this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n var checkToSelectAll = false;\n var isFiltered = false;\n var checkedLen = Object.keys(this.selectedRowState).length;\n if (!this.parent.isPersistSelection) {\n checkedLen = this.selectedRowIndexes.length;\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.parent.isPersistSelection && !((this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n && this.isPartialSelection) && (this.parent.searchSettings.key.length\n || this.parent.filterSettings.columns.length)) {\n isFiltered = true;\n checkToSelectAll = this.isAllSelected(checkedLen);\n }\n var input = this.getCheckAllBox();\n if (input) {\n var spanEle = input.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n setChecked(input, false);\n input.indeterminate = false;\n if ((checkToSelectAll && isFiltered && (this.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result) ||\n this.getData().length)) || (!isFiltered && ((checkedLen === this.totalRecordsCount && this.totalRecordsCount\n && !this.isPartialSelection && (!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n || this.parent.allowPaging)) ||\n (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling\n && this.isPartialSelection && (this.isSelectAllRowCount(checkedLen) || this.isHdrSelectAllClicked))\n || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && ((!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n this.getData().length && checkedLen === this.getData().length) || ((this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n !this.isPartialSelection && ((checkedLen === this.parent.totalDataRecordsCount) || (this.isSelectAllRowCount(checkedLen) &&\n !this.parent.isPersistSelection))) ||\n (this.isPartialSelection && (this.isHdrSelectAllClicked || this.isSelectAllRowCount(checkedLen)))))))) {\n addClass([spanEle], ['e-check']);\n setChecked(input, true);\n if (isInteraction) {\n this.getRenderer().setSelection(null, true, true);\n }\n this.parent.checkAllRows = 'Check';\n }\n else if (((!this.selectedRowIndexes.length && (!this.parent.enableVirtualization ||\n (!this.persistSelectedData.length && !isFiltered) || (isFiltered && this.someDataSelected())) ||\n checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) && !this.parent.allowPaging) ||\n (this.parent.allowPaging && (checkedLen === 0 || (checkedLen && isFiltered && this.someDataSelected())))) {\n addClass([spanEle], ['e-uncheck']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, false, true);\n }\n this.parent.checkAllRows = 'Uncheck';\n }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n input.indeterminate = true;\n }\n if (checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n if (this.isPartialSelection) {\n var rowCount = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; }).length;\n if (rowCount === 0 && spanEle.parentElement.querySelector('.e-frame').classList.contains('e-uncheck')) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.updateSelectedRowIndex(index);\n }\n }\n }\n };\n Selection.prototype.isSelectAllRowCount = function (count) {\n var rowCount = 0;\n var rowObj = this.parent.getRowsObject();\n if (this.parent.selectionSettings.persistSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var dataLen = (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ?\n this.parent.totalDataRecordsCount : this.getData() && this.getData().length;\n if (dataLen === rowObj.length) {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n else {\n return false;\n }\n }\n else {\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n rowCount = this.parent.partialSelectedRecords.length + this.parent.disableSelectedRecords.length;\n if (rowCount === this.totalRecordsCount) {\n return this.parent.partialSelectedRecords.length && count === this.parent.partialSelectedRecords.length;\n }\n else {\n return false;\n }\n }\n else {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n }\n };\n Selection.prototype.keyDownHandler = function (e) {\n // Below are keyCode for command key in MAC OS. Safari/Chrome(91-Left command, 93-Right Command), Opera(17), FireFox(224)\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = true;\n }\n var targetHeadCell = parentsUntil(e.target, 'e-headercell');\n var targetRowCell = parentsUntil(e.target, literals.rowCell);\n var isCheckBox = targetHeadCell ? targetHeadCell.children[0].classList.contains('e-headerchkcelldiv') :\n targetRowCell ? targetRowCell.classList.contains('e-gridchkbox') : false;\n if (isCheckBox && !this.parent.allowKeyboard && e.keyCode === 32) {\n e.preventDefault();\n }\n };\n Selection.prototype.keyUpHandler = function (e) {\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = false;\n }\n };\n Selection.prototype.clickHandler = function (e) {\n var target = e.target;\n this.actualTarget = target;\n if (this.selectionSettings.persistSelection) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (parentsUntil(target, literals.row) || parentsUntil(target, 'e-headerchkcelldiv') ||\n (this.selectionSettings.allowColumnSelection && target.classList.contains('e-headercell'))) {\n this.isInteracted = true;\n }\n this.isMultiCtrlRequest = e.ctrlKey || this.enableSelectMultiTouch ||\n (this.isMacOS && this.cmdKeyPressed);\n if (!this.parent.allowKeyboard) {\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n }\n else {\n this.isMultiShiftRequest = e.shiftKey;\n }\n this.popUpClickHandler(e);\n var chkSelect = false;\n this.preventFocus = true;\n var checkBox;\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n this.checkSelectAllClicked = checkWrap && checkWrap.getElementsByClassName('e-checkselectall') ||\n (this.selectionSettings.persistSelection && parentsUntil(target, literals.row)) ? true : false;\n if (this.selectionSettings.persistSelection && this.isPartialSelection && parentsUntil(target, 'e-headerchkcelldiv')\n && !target.querySelector('.e-checkbox-disabled')) {\n this.isHdrSelectAllClicked = true;\n }\n if (checkWrap && checkWrap.querySelectorAll('.e-checkselect,.e-checkselectall').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n chkSelect = true;\n }\n this.drawBorders();\n this.updateAutoFillPosition();\n target = parentsUntil(target, literals.rowCell);\n if (this.parent.isReact && (target && !target.parentElement && target.classList.contains('e-rowcell'))) {\n target = this.parent.getCellFromIndex(parseInt(target.getAttribute('index'), 10), parseInt(target.getAttribute('data-colindex'), 10));\n }\n if (((target && target.parentElement.classList.contains(literals.row) && !this.parent.selectionSettings.checkboxOnly) || chkSelect)\n && !this.isRowDragSelected) {\n if (this.parent.isCheckBoxSelection) {\n this.isMultiCtrlRequest = true;\n }\n this.target = target;\n if (!isNullOrUndefined(checkBox)) {\n this.checkedTarget = checkBox;\n if (checkBox.classList.contains('e-checkselectall')) {\n this.checkSelectAll(checkBox);\n }\n else {\n this.checkSelect(checkBox);\n }\n }\n else {\n var gObj = this.parent;\n var rIndex = 0;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0) {\n ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n }\n this.parent.hoverFrozenRows(e);\n if (this.parent.isCheckBoxSelection) {\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n }\n }\n if (!this.parent.isCheckBoxSelection && Browser.isDevice && !this.isSingleSel()) {\n this.showPopup(e);\n }\n }\n else if (e.target.classList.contains('e-headercell') &&\n !e.target.classList.contains('e-stackedheadercell')) {\n var uid = e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n this.headerSelectionHandler(this.parent.getColumnIndexByUid(uid));\n }\n this.isMultiCtrlRequest = false;\n this.isMultiShiftRequest = false;\n if (isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n this.preventFocus = false;\n }\n };\n Selection.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-rowselect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSelectMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSelectMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.showPopup = function (e) {\n if (!this.selectionSettings.enableSimpleMultiRowSelection) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-rowselect e-icons e-icon-rowselect' +\n (!this.isSingleSel() && (this.selectedRecords.length > (this.parent.getFrozenColumns() ? 2 : 1)\n || this.selectedRowCellIndexes.length > 1) ? ' e-spanclicked' : ''));\n }\n };\n Selection.prototype.rowCellSelectionHandler = function (rowIndex, cellIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n if (!this.isDragged) {\n this.selectRow(rowIndex, this.selectionSettings.enableToggle);\n }\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n if (this.selectedRowCellIndexes.length) {\n this.updateAutoFillPosition();\n }\n this.drawBorders();\n }\n else if (this.isMultiShiftRequest) {\n if (this.parent.isCheckBoxSelection || (!this.parent.isCheckBoxSelection &&\n !closest(this.target, '.' + literals.rowCell).classList.contains(literals.gridChkBox))) {\n this.selectRowsByRange(isUndefined(this.prevRowIndex) ? rowIndex : this.prevRowIndex, rowIndex);\n }\n else {\n this.addRowsToSelection([rowIndex]);\n }\n this.selectCellsByRange(isUndefined(this.prevCIdxs) ? { rowIndex: rowIndex, cellIndex: cellIndex } : this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.updateAutoFillPosition();\n this.drawBorders();\n }\n else {\n this.addRowsToSelection([rowIndex]);\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n this.showHideBorders('none');\n }\n this.isDragged = false;\n };\n Selection.prototype.onCellFocused = function (e) {\n if (this.parent.frozenRows && e.container.isHeader && e.byKey) {\n if (e.keyArgs.action === 'upArrow') {\n if (this.parent.allowFiltering) {\n e.isJump = e.element.tagName === 'INPUT' ? true : false;\n }\n else {\n e.isJump = e.element.tagName === 'TH' ? true : false;\n }\n }\n else {\n if (e.keyArgs.action === 'downArrow') {\n var rIdx = Number(e.element.parentElement.getAttribute(literals.dataRowIndex));\n e.isJump = rIdx === 0 ? true : false;\n }\n else {\n if (e.keyArgs.action === 'ctrlHome') {\n e.isJump = true;\n }\n }\n }\n }\n var clear = this.parent.isFrozenGrid() ? (((e.container.isHeader && e.element.tagName !== 'TD' && e.isJump &&\n !this.selectionSettings.allowColumnSelection) ||\n ((e.container.isContent || e.element.tagName === 'TD') && !(e.container.isSelectable || e.element.tagName === 'TD')))\n && !(e.byKey && e.keyArgs.action === 'space')) : ((e.container.isHeader && e.isJump) ||\n (e.container.isContent && !e.container.isSelectable)) && !(e.byKey && e.keyArgs.action === 'space')\n && !(e.element.classList.contains('e-detailrowexpand') || e.element.classList.contains('e-detailrowcollapse'));\n var headerAction = (e.container.isHeader && e.element.tagName !== 'TD' && !closest(e.element, '.' + literals.rowCell))\n && !(e.byKey && e.keyArgs.action === 'space');\n if (!e.byKey || clear) {\n if (clear && !this.parent.isCheckBoxSelection) {\n this.clearSelection();\n }\n return;\n }\n var _a = e.container.isContent ? e.container.indexes : e.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var prev = this.focus.getPrevIndexes();\n if (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.' + literals.rowCell))) {\n var thLen = this.parent.getHeaderTable().querySelector('thead').childElementCount;\n rowIndex -= thLen;\n prev.rowIndex = !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex - thLen : null;\n }\n else {\n rowIndex += this.parent.frozenRows;\n prev.rowIndex = prev.rowIndex === 0 || !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex + this.parent.frozenRows : null;\n }\n }\n if (this.parent.isFrozenGrid()) {\n var cIdx = Number(e.element.getAttribute(literals.dataColIndex));\n var selectedIndexes = this.parent.getSelectedRowCellIndexes();\n if (selectedIndexes.length && prev.cellIndex === 0) {\n prev.cellIndex = selectedIndexes[selectedIndexes.length - 1].cellIndexes[0];\n }\n prev.cellIndex = !isNullOrUndefined(prev.cellIndex) ? (prev.cellIndex === cellIndex ? cIdx : cIdx - 1) : null;\n cellIndex = cIdx;\n }\n if (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n rowIndex = parseInt(e.element.parentElement.getAttribute('data-rowindex'), 10);\n }\n if ((headerAction || (['ctrlPlusA', 'escape'].indexOf(e.keyArgs.action) === -1 &&\n e.keyArgs.action !== 'space' && rowIndex === prev.rowIndex && cellIndex === prev.cellIndex)) &&\n !this.selectionSettings.allowColumnSelection) {\n return;\n }\n this.preventFocus = true;\n var columnIndex = this.getKeyColIndex(e);\n if (this.needColumnSelection) {\n cellIndex = columnIndex;\n }\n if (this.parent.element.classList.contains('e-gridcell-read') && (e.keyArgs.action === 'tab' || e.keyArgs.action === 'shiftTab'\n || e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML + ' column header ' + this.parent.getColumnByIndex(cellIndex).field;\n this.target.setAttribute('aria-label', targetLabel);\n }\n switch (e.keyArgs.action) {\n case 'downArrow':\n case 'upArrow':\n case 'enter':\n case 'shiftEnter':\n this.target = e.element;\n this.isKeyAction = true;\n this.applyDownUpKey(rowIndex, cellIndex);\n break;\n case 'rightArrow':\n case 'leftArrow':\n this.applyRightLeftKey(rowIndex, cellIndex);\n break;\n case 'shiftDown':\n case 'shiftUp':\n this.shiftDownKey(rowIndex, cellIndex);\n break;\n case 'shiftLeft':\n case 'shiftRight':\n this.applyShiftLeftRightKey(rowIndex, cellIndex);\n break;\n case 'home':\n case 'end':\n cellIndex = e.keyArgs.action === 'end' ? this.getLastColIndex(rowIndex) : 0;\n this.applyHomeEndKey(rowIndex, cellIndex);\n break;\n case 'ctrlHome':\n case 'ctrlEnd':\n this.applyCtrlHomeEndKey(rowIndex, cellIndex);\n break;\n case 'escape':\n this.clearSelection();\n break;\n case 'ctrlPlusA':\n this.ctrlPlusA();\n break;\n case 'space':\n this.applySpaceSelection(e.element);\n break;\n case 'tab':\n if (this.parent.editSettings.allowNextRowEdit) {\n this.selectRow(rowIndex);\n }\n break;\n }\n this.needColumnSelection = false;\n this.preventFocus = false;\n this.positionBorders();\n this.updateAutoFillPosition();\n };\n Selection.prototype.getKeyColIndex = function (e) {\n var uid;\n var index = null;\n var stackedHeader = e.element.querySelector('.e-stackedheadercelldiv');\n if (this.selectionSettings.allowColumnSelection && parentsUntil(e.element, 'e-columnheader')) {\n this.needColumnSelection = e.container.isHeader ? true : false;\n if (stackedHeader) {\n if (e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow') {\n return index;\n }\n uid = stackedHeader.getAttribute('e-mappinguid');\n var innerColumn = this.getstackedColumns(this.parent.getColumnByUid(uid).columns);\n var lastIndex = this.parent.getColumnIndexByUid(innerColumn[innerColumn.length - 1].uid);\n var firstIndex = this.parent.getColumnIndexByUid(innerColumn[0].uid);\n index = this.prevColIndex >= lastIndex ? firstIndex : lastIndex;\n }\n else {\n index = this.parent.getColumnIndexByUid(e.element\n .querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n }\n }\n return index;\n };\n /**\n * Apply ctrl + A key selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.ctrlPlusA = function () {\n if (this.isRowType() && !this.isSingleSel()) {\n this.selectRowsByRange(0, this.getCurrentBatchRecordChanges().length - 1);\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange({ rowIndex: 0, cellIndex: 0 }, { rowIndex: this.parent.getRows().length - 1, cellIndex: this.parent.getColumns().length - 1 });\n }\n };\n Selection.prototype.applySpaceSelection = function (target) {\n if (target.classList.contains('e-checkselectall')) {\n this.checkedTarget = target;\n this.checkSelectAll(this.checkedTarget);\n }\n else {\n if (target.classList.contains('e-checkselect')) {\n this.checkedTarget = target;\n this.checkSelect(this.checkedTarget);\n }\n }\n };\n Selection.prototype.applyDownUpKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if (this.parent.isCheckBoxSelection && this.parent.checkAllRows === 'Check' && !this.selectionSettings.persistSelection &&\n !this.selectionSettings.checkboxOnly) {\n this.checkSelectAllAction(false);\n this.checkedTarget = null;\n }\n if (this.isRowType() && !this.selectionSettings.checkboxOnly) {\n if (this.parent.frozenRows) {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n else {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n };\n Selection.prototype.applyUpDown = function (rowIndex) {\n if (rowIndex < 0) {\n return;\n }\n if (!this.target) {\n this.target = this.parent.getRows()[0].children[this.parent.groupSettings.columns.length || 0];\n }\n var cIndex = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var frzCols = this.parent.getFrozenColumns();\n if (frzCols) {\n if (cIndex >= frzCols) {\n this.target =\n this.contentRenderer.getMovableRowByIndex(rowIndex).getElementsByClassName(literals.rowCell)[cIndex - frzCols];\n }\n else {\n this.target = this.contentRenderer.getRowByIndex(rowIndex)\n .getElementsByClassName(literals.rowCell)[parseInt(cIndex.toString(), 10)];\n }\n }\n else {\n var row = this.contentRenderer.getRowByIndex(rowIndex);\n if (row) {\n this.target = row.getElementsByClassName(literals.rowCell)[parseInt(cIndex.toString(), 10)];\n }\n }\n this.addAttribute(this.target);\n if (this.parent.element.classList.contains('e-gridcell-read')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML;\n this.target.setAttribute('aria-label', targetLabel);\n }\n };\n Selection.prototype.applyRightLeftKey = function (rowIndex, cellIndex) {\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n else if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n this.addAttribute(this.target);\n }\n };\n Selection.prototype.applyHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n else {\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n };\n /**\n * Apply shift+down key selection\n *\n * @param {number} rowIndex - specfies the rowIndex\n * @param {number} cellIndex - specifies the CellIndex\n * @returns {void}\n * @hidden\n */\n Selection.prototype.shiftDownKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.isRowType() && !this.isSingleSel()) {\n if (!isUndefined(this.prevRowIndex)) {\n this.selectRowsByRange(this.prevRowIndex, rowIndex);\n this.applyUpDown(rowIndex);\n }\n else if (this.isPartialSelection) {\n this.selectRow(rowIndex, true);\n }\n else {\n this.selectRow(0, true);\n }\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange(this.prevCIdxs || { rowIndex: 0, cellIndex: 0 }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.applyShiftLeftRightKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumnsByRange(this.prevColIndex, cellIndex);\n }\n else {\n this.selectCellsByRange(this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.getstackedColumns = function (column) {\n var innerColumnIndexes = [];\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[parseInt(i.toString(), 10)].columns) {\n this.getstackedColumns(column[parseInt(i.toString(), 10)].columns);\n }\n else {\n innerColumnIndexes.push(column[parseInt(i.toString(), 10)]);\n }\n }\n return innerColumnIndexes;\n };\n Selection.prototype.applyCtrlHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isRowType()) {\n this.selectRow(rowIndex, true);\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n };\n Selection.prototype.addRemoveClassesForRow = function (row, isAdd, clearAll) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n if (row) {\n var cells = [].slice.call(row.getElementsByClassName(literals.rowCell));\n var detailIndentCell = row.querySelector('.e-detailrowcollapse') || row.querySelector('.e-detailrowexpand');\n var dragdropIndentCell = row.querySelector('.e-rowdragdrop');\n if (detailIndentCell) {\n cells.push(detailIndentCell);\n }\n if (dragdropIndentCell) {\n cells.push(dragdropIndentCell);\n }\n addRemoveActiveClasses.apply(void 0, [cells, isAdd].concat(args));\n }\n this.getRenderer().setSelection(row ? row.getAttribute('data-uid') : null, isAdd, clearAll);\n };\n Selection.prototype.isRowType = function () {\n return this.selectionSettings.mode === 'Row' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isCellType = function () {\n return this.selectionSettings.mode === 'Cell' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isSingleSel = function () {\n return this.selectionSettings.type === 'Single';\n };\n Selection.prototype.getRenderer = function () {\n if (isNullOrUndefined(this.contentRenderer)) {\n this.contentRenderer = this.factory.getRenderer(RenderType.Content);\n }\n return this.contentRenderer;\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} returns the Object\n */\n Selection.prototype.getSelectedRecords = function () {\n var selectedData = [];\n if (!this.selectionSettings.persistSelection && this.selectedRecords.length) {\n selectedData = this.parent.getRowsObject().filter(function (row) { return row.isSelected; })\n .map(function (m) { return m.data; });\n }\n else {\n selectedData = this.persistSelectedData;\n }\n return selectedData;\n };\n /**\n * Select the column by passing start column index\n *\n * @param {number} index - specifies the index\n * @returns {void}\n */\n Selection.prototype.selectColumn = function (index) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(index.toString(), 10)])) {\n return;\n }\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var isColSelected = selectedCol.classList.contains('e-columnselection');\n if ((!gObj.selectionSettings.allowColumnSelection)) {\n return;\n }\n var isMultiColumns = this.selectedColumnsIndexes.length > 1 &&\n this.selectedColumnsIndexes.indexOf(index) > -1;\n this.clearColDependency();\n if (!isColSelected || !this.selectionSettings.enableToggle || isMultiColumns) {\n var args = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(args, events.columnSelecting);\n if (args.cancel) {\n this.disableInteracted();\n return;\n }\n if (!(gObj.selectionSettings.enableToggle && index === this.prevColIndex && isColSelected) || isMultiColumns) {\n this.updateColSelection(selectedCol, index);\n }\n var selectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(index);\n };\n /**\n * Select the columns by passing start and end column index\n *\n * @param {number} startIndex - specifies the start index\n * @param {number} endIndex - specifies the end index\n * @returns {void}\n */\n Selection.prototype.selectColumnsByRange = function (startIndex, endIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var indexes = [];\n if (gObj.selectionSettings.type === 'Single' || isNullOrUndefined(endIndex)) {\n indexes[0] = startIndex;\n }\n else {\n var min = startIndex < endIndex;\n for (var i = startIndex; min ? i <= endIndex : i >= endIndex; min ? i++ : i--) {\n indexes.push(i);\n }\n }\n this.selectColumns(indexes);\n };\n /**\n * Select the columns by passing column indexes\n *\n * @param {number[]} columnIndexes - specifies the columnIndexes\n * @returns {void}\n */\n Selection.prototype.selectColumns = function (columnIndexes) {\n var gObj = this.parent;\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n columnIndexes = [columnIndexes[0]];\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n this.clearColDependency();\n var selectingArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n for (var i = 0, len = columnIndexes.length; i < len; i++) {\n this.updateColSelection(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(columnIndexes[parseInt(i.toString(), 10)]).uid), columnIndexes[parseInt(i.toString(), 10)]);\n }\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n this.updateColProps(columnIndexes[0]);\n };\n /**\n * Select the column with existing column by passing column index\n *\n * @param {number} startIndex - specifies the start index\n * @returns {void}\n */\n Selection.prototype.selectColumnWithExisting = function (startIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var newCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(startIndex).uid);\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n this.clearColDependency();\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n if (this.selectedColumnsIndexes.indexOf(startIndex) > -1) {\n this.clearColumnSelection(startIndex);\n }\n else {\n var selectingArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: gObj.getColumnByIndex(startIndex),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n this.updateColSelection(newCol, startIndex);\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n column: gObj.getColumnByIndex(startIndex),\n columnIndexes: this.selectedColumnsIndexes,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(startIndex);\n };\n /**\n * Clear the column selection\n *\n * @param {number} clearIndex - specifies the clearIndex\n * @returns {void}\n */\n Selection.prototype.clearColumnSelection = function (clearIndex) {\n if (this.isColumnSelected) {\n var gObj = this.parent;\n if (!isNullOrUndefined(clearIndex) && this.selectedColumnsIndexes.indexOf(clearIndex) === -1) {\n return;\n }\n var index = !isNullOrUndefined(clearIndex) ? clearIndex :\n this.selectedColumnsIndexes[this.selectedColumnsIndexes.length - 1];\n var col = gObj.getColumnByIndex(index);\n var selectedCol = void 0;\n var column = gObj.getColumnByIndex(index);\n if (col.getFreezeTableName() === literals.frozenRight) {\n selectedCol = gObj.getFrozenRightColumnHeaderByIndex(index);\n }\n else if (col.getFreezeTableName() === 'movable') {\n selectedCol = gObj.getMovableColumnHeaderByIndex(index);\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(column.uid);\n }\n var deselectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted\n };\n var isCanceled = this.columnDeselect(deselectedArgs, events.columnDeselecting);\n if (isCanceled) {\n this.disableInteracted();\n return;\n }\n var selectedHeader = !isNullOrUndefined(clearIndex) ? [selectedCol] :\n [].slice.call(gObj.getHeaderContent().getElementsByClassName('e-columnselection'));\n var selectedCells = this.getSelectedColumnCells(clearIndex);\n for (var i = 0, len = selectedHeader.length; i < len; i++) {\n addRemoveActiveClasses([selectedHeader[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n addRemoveActiveClasses([selectedCells[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n if (!isNullOrUndefined(clearIndex)) {\n this.selectedColumnsIndexes.splice(this.selectedColumnsIndexes.indexOf(clearIndex), 1);\n this.parent.getColumns()[parseInt(clearIndex.toString(), 10)].isSelected = false;\n }\n else {\n this.columnDeselect(deselectedArgs, events.columnDeselected);\n this.selectedColumnsIndexes = [];\n this.isColumnSelected = false;\n this.parent.getColumns().filter(function (col) { return col.isSelected = false; });\n }\n }\n };\n Selection.prototype.getselectedCols = function () {\n var gObj = this.parent;\n var selectedCol;\n if (this.selectedColumnsIndexes.length > 1) {\n selectedCol = [];\n for (var i = 0; i < this.selectedColumnsIndexes.length; i++) {\n (selectedCol).push(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[parseInt(i.toString(), 10)]).uid));\n }\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[0]).uid);\n }\n return selectedCol;\n };\n Selection.prototype.getSelectedColumnCells = function (clearIndex) {\n var gObj = this.parent;\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? gObj.getRows() : gObj.getDataRows();\n var movableRows;\n var frRows;\n if (gObj.isFrozenGrid() && gObj.getContent().querySelector('.' + literals.movableContent)) {\n movableRows = isRowTemplate ? gObj.getMovableRows() : gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, movableRows);\n if (gObj.getFrozenMode() === literals.leftRight) {\n frRows = isRowTemplate ? gObj.getFrozenRightRows() : gObj.getFrozenRightDataRows();\n rows = gObj.addMovableRows(rows, frRows);\n }\n }\n var seletedcells = [];\n var selectionString = !isNullOrUndefined(clearIndex) ? '[data-colindex=\"' + clearIndex + '\"]' : '.e-columnselection';\n for (var i = 0, len = rows.length; i < len; i++) {\n seletedcells = seletedcells.concat([].slice.call(rows[parseInt(i.toString(), 10)].querySelectorAll(selectionString)));\n }\n return seletedcells;\n };\n Selection.prototype.columnDeselect = function (args, event) {\n if (event === 'columnDeselected') {\n delete args.cancel;\n }\n this.onActionComplete(args, event);\n return args.cancel;\n };\n Selection.prototype.updateColProps = function (startIndex) {\n this.prevColIndex = startIndex;\n this.isColumnSelected = this.selectedColumnsIndexes.length && true;\n };\n Selection.prototype.clearColDependency = function () {\n this.clearColumnSelection();\n this.selectedColumnsIndexes = [];\n };\n Selection.prototype.updateColSelection = function (selectedCol, startIndex) {\n if (isNullOrUndefined(this.parent.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var left = this.parent.getFrozenLeftCount();\n var movable = this.parent.getMovableColumnsCount();\n var col = this.parent.getColumnByIndex(startIndex);\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows;\n this.selectedColumnsIndexes.push(startIndex);\n this.parent.getColumns()[parseInt(startIndex.toString(), 10)].isSelected = true;\n if (col.getFreezeTableName() === literals.frozenRight) {\n startIndex = startIndex - (left + movable);\n rows = isRowTemplate ? this.parent.getFrozenRightRows() : this.parent.getFrozenRightDataRows();\n }\n else if (col.getFreezeTableName() === 'movable') {\n startIndex = startIndex - left;\n rows = isRowTemplate ? this.parent.getMovableRows() : this.parent.getMovableDataRows();\n }\n else {\n startIndex = startIndex + this.parent.getIndentCount();\n rows = isRowTemplate ? this.parent.getRows() : this.parent.getDataRows();\n }\n addRemoveActiveClasses([selectedCol], true, 'e-columnselection');\n for (var j = 0, len = rows.length; j < len; j++) {\n if (rows[parseInt(j.toString(), 10)].classList.contains(literals.row)) {\n if ((rows[parseInt(j.toString(), 10)].classList.contains(literals.editedRow)\n || rows[parseInt(j.toString(), 10)].classList.contains(literals.addedRow))\n && this.parent.editSettings.mode === 'Normal'\n && !isNullOrUndefined(rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n else if (!isNullOrUndefined(rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n }\n }\n };\n Selection.prototype.headerSelectionHandler = function (colIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n this.selectColumn(colIndex);\n }\n else if (this.isMultiShiftRequest) {\n this.selectColumnsByRange(isUndefined(this.prevColIndex) ? colIndex : this.prevColIndex, colIndex);\n }\n else {\n this.selectColumnWithExisting(colIndex);\n }\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.addEventListener_checkbox = function () {\n var _this = this;\n this.parent.on(events.dataReady, this.dataReady, this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.on(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.on(events.contentReady, this.checkBoxSelectionChanged, this);\n this.parent.on(events.beforeRefreshOnDataChange, this.initPerisistSelection, this);\n this.parent.on(events.onEmpty, this.setCheckAllForEmptyGrid, this);\n this.actionCompleteFunc = this.actionCompleteHandler.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.click, this.clickHandler, this);\n this.resizeEndFn = function () {\n _this.updateAutoFillPosition();\n _this.drawBorders();\n };\n this.resizeEndFn.bind(this);\n this.parent.addEventListener(events.resizeStop, this.resizeEndFn);\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.removeEventListener_checkbox = function () {\n this.parent.off(events.dataReady, this.dataReady);\n this.parent.removeEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.off(events.onEmpty, this.setCheckAllForEmptyGrid);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.beforeRefreshOnDataChange, this.initPerisistSelection);\n };\n Selection.prototype.setCheckAllForEmptyGrid = function () {\n var checkAllBox = this.getCheckAllBox();\n if (checkAllBox) {\n this.parent.isCheckBoxSelection = true;\n var spanEle = checkAllBox.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n };\n Selection.prototype.dataReady = function (e) {\n this.isHeaderCheckboxClicked = false;\n var isInfinitecroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfinitecroll) {\n this.disableUI = !this.parent.enableImmutableMode && !(e.requestType == 'save' && e['action'] == 'add');\n this.clearSelection();\n this.setCheckAllState();\n this.disableUI = false;\n }\n };\n Selection.prototype.actionCompleteHandler = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n };\n Selection.prototype.selectRowIndex = function (index) {\n this.parent.isSelectedRowIndexUpdating = true;\n if ((isNullOrUndefined(this.parent.selectedRowIndex) || this.parent.selectedRowIndex === -1) || !this.parent.enablePersistence) {\n this.parent.selectedRowIndex = index;\n }\n else {\n this.parent.selectedRowIndex = -1;\n }\n };\n Selection.prototype.disableInteracted = function () {\n this.isInteracted = false;\n };\n Selection.prototype.activeTarget = function () {\n this.actualTarget = this.isInteracted ? this.actualTarget : null;\n };\n return Selection;\n}());\nexport { Selection };\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\n/**\n * The `Search` module is used to handle search action.\n */\nvar Search = /** @class */ (function () {\n /**\n * Constructor for Grid search module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Search(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * Searches Grid records by given key.\n *\n * > You can customize the default search action by using [`searchSettings`](./searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n Search.prototype.search = function (searchString) {\n var gObj = this.parent;\n searchString = isNullOrUndefined(searchString) ? '' : searchString;\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.search, arg1: searchString });\n return;\n }\n if (searchString !== gObj.searchSettings.key) {\n gObj.searchSettings.key = searchString.toString();\n gObj.dataBind();\n }\n else if (this.refreshSearch) {\n gObj.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.searchComplete, this.onSearchComplete, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.actionCompleteFunc = this.onActionComplete.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.cancelBegin, this.cancelBeginEvent, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.searchComplete, this.onSearchComplete);\n this.parent.off(events.destroy, this.destroy);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.cancelBegin, this.cancelBeginEvent);\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Search.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (!isNullOrUndefined(e.properties.key)) {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin, searchString: this.parent.searchSettings.key\n });\n }\n else {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin\n });\n }\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onSearchComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n searchString: this.parent.searchSettings.key, requestType: 'searching', type: events.actionComplete\n }));\n };\n /**\n * The function used to store the requestType\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onActionComplete = function (e) {\n this.refreshSearch = e.requestType !== 'searching';\n };\n Search.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'searching') {\n this.parent.setProperties({ searchSettings: { key: '' } }, true);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Search.prototype.getModuleName = function () {\n return 'search';\n };\n return Search;\n}());\nexport { Search };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject, isGroupAdaptive, isActionPrevent, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * The `ShowHide` module is used to control column visibility.\n */\nvar ShowHide = /** @class */ (function () {\n /**\n * Constructor for the show hide module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function ShowHide(parent) {\n this.colName = [];\n this.isShowHide = false;\n this.parent = parent;\n this.addEventListener();\n }\n ShowHide.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.batchCancel, handler: this.batchChanges },\n { event: events.batchCnfrmDlgCancel, handler: this.resetColumnState }\n ];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ShowHide.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n ShowHide.prototype.batchChanges = function () {\n if (this.isShowHide) {\n this.isShowHide = false;\n this.setVisible(this.colName, this.changedCol);\n this.changedCol = this.colName = [];\n }\n };\n /**\n * Shows a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to show.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.show = function (columnName, showBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, showBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = true;\n }\n this.setVisible(columns);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to hide.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.hide = function (columnName, hideBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, hideBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = false;\n }\n this.setVisible(columns);\n };\n ShowHide.prototype.getToggleFields = function (key) {\n var finalized = [];\n if (typeof key === 'string') {\n finalized = [key];\n }\n else {\n finalized = key;\n }\n return finalized;\n };\n ShowHide.prototype.getColumns = function (keys, getKeyBy) {\n var _this = this;\n var columns = iterateArrayOrObject(keys, function (key) {\n return iterateArrayOrObject(_this.parent.columnModel, function (item) {\n if (item[\"\" + getKeyBy] === key) {\n return item;\n }\n return undefined;\n })[0];\n });\n return columns;\n };\n ShowHide.prototype.batchActionPrevent = function (columns, changedStateColumns) {\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n if (isActionPrevent(this.parent)) {\n this.colName = columns;\n this.changedCol = changedStateColumns;\n this.parent.closeEdit();\n return false;\n }\n return true;\n };\n ShowHide.prototype.resetColumnState = function () {\n if (this.isShowHide) {\n for (var i = 0; i < this.colName.length; i++) {\n this.colName[parseInt(i.toString(), 10)].visible = !this.colName[parseInt(i.toString(), 10)].visible;\n }\n }\n };\n /**\n * Shows or hides columns by given column collection.\n *\n * @private\n * @param {Column[]} columns - Specifies the columns.\n * @param {Column[]} changedStateColumns - specifies the changedStateColumns\n * @returns {void}\n */\n ShowHide.prototype.setVisible = function (columns, changedStateColumns) {\n var _this = this;\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n this.isShowHide = true;\n if (!this.batchActionPrevent(columns, changedStateColumns)) {\n return;\n }\n changedStateColumns = (changedStateColumns.length > 0) ? changedStateColumns : columns;\n var args = {\n requestType: 'columnstate',\n cancel: false,\n columns: changedStateColumns\n };\n var cancel = 'cancel';\n if (this.parent.enableInfiniteScrolling && this.parent.allowGrouping\n && this.parent.groupModule.groupSettings.columns.length > 0) {\n this.parent.contentModule.visibleRows = [];\n }\n this.parent.trigger(events.actionBegin, args, function (showHideArgs) {\n var currentViewCols = _this.parent.getColumns();\n columns = isNullOrUndefined(columns) ? currentViewCols : columns;\n if (showHideArgs[\"\" + cancel]) {\n _this.parent.notify(events.resetColumns, { showHideArgs: showHideArgs });\n if (columns.length > 0) {\n columns[0].visible = true;\n }\n return;\n }\n if (isGroupAdaptive(_this.parent)) {\n _this.parent.contentModule.emptyVcRows();\n }\n if (_this.parent.allowSelection && _this.parent.getSelectedRecords().length &&\n !_this.parent.selectionSettings.persistSelection) {\n _this.parent.clearSelection();\n }\n if (_this.parent.enableColumnVirtualization) {\n var colsInCurrentView = columns.filter(function (col1) { return (currentViewCols.some(function (col2) { return col1.field === col2.field; })); });\n if (colsInCurrentView.length) {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n }\n else {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n var params = {\n requestType: 'columnstate',\n columns: changedStateColumns\n };\n _this.parent.trigger(events.actionComplete, params);\n if (_this.parent.columnQueryMode !== 'All') {\n _this.parent.refresh();\n }\n });\n if (this.parent.autoFit && !this.parent.groupSettings.columns.length) {\n this.parent.preventAdjustColumns();\n }\n };\n return ShowHide;\n}());\nexport { ShowHide };\n","import { Browser, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getScrollBarWidth, getUpdateUsingRaf } from '../base/util';\nimport { scroll, contentReady, uiUpdate, onEmpty, headerRefreshed, textWrapRefresh, virtualScrollEdit, infiniteScrollHandler, closeFilterDialog } from '../base/constant';\nimport { lazyLoadScrollHandler, checkScrollReset } from '../base/constant';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as literals from '../base/string-literals';\nimport * as events from '../base/constant';\n/**\n * The `Scroll` module is used to handle scrolling behaviour.\n */\nvar Scroll = /** @class */ (function () {\n /**\n * Constructor for the Grid scrolling.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Scroll(parent) {\n //To maintain scroll state on grid actions.\n this.previousValues = { top: 0, left: 0 };\n this.oneTimeReady = true;\n this.parent = parent;\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Scroll.prototype.getModuleName = function () {\n return 'scroll';\n };\n /**\n * @param {boolean} uiupdate - specifies the uiupdate\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setWidth = function (uiupdate) {\n this.parent.element.style.width = formatUnit(this.parent.width);\n if (uiupdate) {\n this.widthService.setWidthToColumns();\n }\n if (this.parent.toolbarModule && this.parent.toolbarModule.toolbar &&\n this.parent.toolbarModule.toolbar.element) {\n var tlbrElement = this.parent.toolbarModule.toolbar.element;\n var tlbrLeftElement = tlbrElement.querySelector('.e-toolbar-left');\n var tlbrCenterElement = tlbrElement.querySelector('.e-toolbar-center');\n var tlbrRightElement = tlbrElement.querySelector('.e-toolbar-right');\n var tlbrItems = tlbrElement.querySelector('.e-toolbar-items');\n var tlbrLeftWidth = tlbrLeftElement ? tlbrLeftElement.clientWidth : 0;\n var tlbrCenterWidth = tlbrCenterElement ? tlbrCenterElement.clientWidth : 0;\n var tlbrRightWidth = tlbrRightElement ? tlbrRightElement.clientWidth : 0;\n var tlbrItemsWidth = tlbrItems ? tlbrItems.clientWidth : 0;\n var tlbrWidth = tlbrElement ? tlbrElement.clientWidth : 0;\n if (!this.parent.enableAdaptiveUI || tlbrLeftWidth > tlbrWidth || tlbrCenterWidth > tlbrWidth || tlbrRightWidth > tlbrWidth ||\n tlbrItemsWidth > tlbrWidth) {\n this.parent.toolbarModule.toolbar.refreshOverflow();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setHeight = function () {\n var mHdrHeight = 0;\n var content = this.parent.getContent().querySelector('.' + literals.content);\n var height = this.parent.height;\n if (this.parent.isFrozenGrid() && this.parent.height !== 'auto' && this.parent.height.toString().indexOf('%') < 0) {\n height = parseInt(height, 10) - Scroll.getScrollBarWidth();\n }\n if (!this.parent.enableVirtualization && this.parent.frozenRows && this.parent.height !== 'auto') {\n var tbody = this.parent.getHeaderContent()\n .querySelector(literals.tbody + ':not(.e-masked-tbody)');\n mHdrHeight = tbody ? tbody.offsetHeight : 0;\n if (tbody && mHdrHeight) {\n var add = tbody.getElementsByClassName(literals.addedRow).length;\n var height_1 = add * this.parent.getRowHeight();\n mHdrHeight -= height_1;\n }\n else if (!this.parent.isInitialLoad && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && this.parent.getHeaderContent().querySelector('.e-masked-table')) {\n height = parseInt(height, 10) - (this.parent.frozenRows * this.parent.getRowHeight());\n }\n content.style.height = formatUnit(height - mHdrHeight);\n }\n else {\n content.style.height = formatUnit(height);\n }\n this.ensureOverflow(content);\n if (this.parent.isFrozenGrid()) {\n this.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setPadding = function () {\n var content = this.parent.getHeaderContent();\n var scrollWidth = Scroll.getScrollBarWidth() - this.getThreshold();\n var cssProps = this.getCssProperties();\n var padding = this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight ? '0.5px' : '1px';\n content.querySelector('.' + literals.headerContent).style[cssProps.border] = scrollWidth > 0 ? padding : '0px';\n content.style[cssProps.padding] = scrollWidth > 0 ? scrollWidth + 'px' : '0px';\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removePadding = function (rtl) {\n var cssProps = this.getCssProperties(rtl);\n var hDiv = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n hDiv.style[cssProps.border] = '';\n hDiv.parentElement.style[cssProps.padding] = '';\n var footerDiv = this.parent.getFooterContent();\n if (footerDiv && footerDiv.classList.contains('e-footerpadding')) {\n footerDiv.classList.remove('e-footerpadding');\n }\n };\n /**\n * Refresh makes the Grid adoptable with the height of parent container.\n *\n * > The [`height`](./#height) must be set to 100%.\n *\n * @returns {void}\n */\n Scroll.prototype.refresh = function () {\n if (this.parent.height !== '100%') {\n return;\n }\n var content = this.parent.getContent();\n this.parent.element.style.height = '100%';\n var height = this.widthService.getSiblingsHeight(content);\n content.style.height = 'calc(100% - ' + height + 'px)'; //Set the height to the '.' + literals.gridContent;\n if (this.parent.isFrozenGrid()) {\n content.firstElementChild.style.height = 'calc(100% - ' + getScrollBarWidth() + 'px)';\n }\n };\n Scroll.prototype.getThreshold = function () {\n /* Some browsers places the scroller outside the content,\n * hence the padding should be adjusted.*/\n var appName = Browser.info.name;\n if (appName === 'mozilla') {\n return 0.5;\n }\n return 1;\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(onEmpty, this.wireEvents, this);\n this.parent.on(contentReady, this.wireEvents, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(textWrapRefresh, this.wireEvents, this);\n this.parent.on(headerRefreshed, this.setScrollLeft, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(onEmpty, this.wireEvents);\n this.parent.off(contentReady, this.wireEvents);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(textWrapRefresh, this.wireEvents);\n this.parent.off(headerRefreshed, this.setScrollLeft);\n this.unwireEvents();\n };\n Scroll.prototype.unwireEvents = function () {\n var frzCols = this.parent.isFrozenGrid();\n var mCont;\n var mHdr;\n if (this.content) {\n mCont = this.content.querySelector('.' + literals.movableContent);\n }\n if (this.header) {\n mHdr = this.header.querySelector('.' + literals.movableHeader);\n }\n var mScrollBar = this.parent.getContent() ? this.parent.getContent().querySelector('.e-movablescrollbar') : null;\n if (this.parent.frozenRows && ((this.header && !frzCols) || (frzCols && mHdr))) {\n EventHandler.remove(frzCols ? mHdr : this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(frzCols ? mHdr : this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n if (this.parent.isFrozenGrid()) {\n if (mScrollBar) {\n EventHandler.remove(mScrollBar, 'scroll', this.onCustomScrollbarScroll);\n }\n if (mCont) {\n EventHandler.remove(mCont, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(mCont, 'touchstart pointerdown', this.setPageXY);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.remove(mCont, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (mHdr) {\n EventHandler.remove(mHdr, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(mHdr, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(mHdr, 'touchmove pointermove', this.onTouchScroll);\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.onFrozenContentScroll);\n }\n }\n else {\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.contentScrollHandler);\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.headerScrollHandler);\n }\n this.contentScrollHandler = null;\n this.headerScrollHandler = null;\n }\n if (this.parent.aggregates.length && this.parent.getFooterContent()) {\n EventHandler.remove(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll);\n }\n };\n Scroll.prototype.setScrollLeft = function () {\n if (this.parent.isFrozenGrid()) {\n this.parent.headerModule.getMovableHeader().scrollLeft = this.previousValues.left;\n }\n else {\n this.parent.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = this.previousValues.left;\n }\n };\n Scroll.prototype.onFrozenContentScroll = function () {\n var _this = this;\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.parent.notify(infiniteScrollHandler, e);\n }\n _this.previousValues.top = e.target.scrollTop;\n };\n };\n Scroll.prototype.onContentScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n var isHeader = element.classList.contains(literals.headerContent);\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling && !_this.parent.isEdit) {\n _this.parent.notify(infiniteScrollHandler, { target: e.target, isLeft: _this.previousValues.left !== left });\n }\n if (_this.parent.groupSettings.columns.length && _this.parent.groupSettings.enableLazyLoading) {\n var isDown = _this.previousValues.top < _this.parent.getContent().firstElementChild.scrollTop;\n _this.parent.notify(lazyLoadScrollHandler, { scrollDown: isDown });\n }\n _this.parent.notify(virtualScrollEdit, {});\n var isFooter = target.classList.contains('e-summarycontent');\n if (_this.previousValues.left === left) {\n _this.previousValues.top = !isHeader ? _this.previousValues.top : target.scrollTop;\n return;\n }\n _this.parent.notify(closeFilterDialog, e);\n element.scrollLeft = left;\n if (isFooter) {\n _this.header.scrollLeft = left;\n }\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n };\n };\n Scroll.prototype.onCustomScrollbarScroll = function (mCont, mHdr) {\n var _this = this;\n var content = mCont;\n var header = mHdr;\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (_this.previousValues.left === left) {\n return;\n }\n content.scrollLeft = left;\n header.scrollLeft = left;\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n if (_this.parent.isDestroyed) {\n return;\n }\n };\n };\n Scroll.prototype.onTouchScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n var isFrozen = _this.parent.isFrozenGrid();\n var pageXY = _this.getPointXY(e);\n var left = element.scrollLeft + (_this.pageXY.x - pageXY.x);\n var mHdr = isFrozen ?\n _this.parent.getHeaderContent().querySelector('.' + literals.movableHeader) :\n _this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mCont = isFrozen ?\n _this.parent.getContent().querySelector('.' + literals.movableContent) :\n _this.parent.getContent().querySelector('.' + literals.content);\n if (_this.previousValues.left === left || (left < 0 || (mHdr.scrollWidth - mHdr.clientWidth) < left)) {\n return;\n }\n e.preventDefault();\n mHdr.scrollLeft = left;\n mCont.scrollLeft = left;\n if (isFrozen) {\n var scrollBar = _this.parent.getContent().querySelector('.e-movablescrollbar');\n scrollBar.scrollLeft = left;\n }\n _this.pageXY.x = pageXY.x;\n _this.previousValues.left = left;\n };\n };\n Scroll.prototype.setPageXY = function () {\n var _this = this;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n _this.pageXY = _this.getPointXY(e);\n };\n };\n Scroll.prototype.getPointXY = function (e) {\n var pageXY = { x: 0, y: 0 };\n if (e.touches && e.touches.length) {\n pageXY.x = e.touches[0].pageX;\n pageXY.y = e.touches[0].pageY;\n }\n else {\n pageXY.x = e.pageX;\n pageXY.y = e.pageY;\n }\n return pageXY;\n };\n Scroll.prototype.getScrollbleParent = function (node) {\n if (node === null) {\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parent = isNullOrUndefined(node.tagName) ? node.scrollingElement : node;\n var overflowY = document.defaultView.getComputedStyle(parent, null).overflowY;\n if (parent.scrollHeight > parent.clientHeight && overflowY !== 'hidden'\n && overflowY !== 'visible' || node.tagName === 'HTML' || node.tagName === 'BODY') {\n return node;\n }\n else {\n return this.getScrollbleParent(node.parentNode);\n }\n };\n /**\n * @param {boolean} isAdd - specifies whether adding/removing the event\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addStickyListener = function (isAdd) {\n this.parentElement = this.getScrollbleParent(this.parent.element.parentElement);\n if (isAdd && this.parentElement) {\n this.eventElement = this.parentElement.tagName === 'HTML' || this.parentElement.tagName === 'BODY' ? document :\n this.parentElement;\n EventHandler.add(this.eventElement, 'scroll', this.makeStickyHeader, this);\n }\n else if (this.eventElement) {\n EventHandler.remove(this.eventElement, 'scroll', this.makeStickyHeader);\n this.eventElement = null;\n }\n };\n Scroll.prototype.wireEvents = function () {\n var _this = this;\n if (this.oneTimeReady) {\n var frzCols = this.parent.isFrozenGrid();\n this.content = this.parent.getContent().querySelector('.' + literals.content);\n this.header = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mCont = this.content.querySelector('.' + literals.movableContent);\n var mHdr = this.header.querySelector('.' + literals.movableHeader);\n var mScrollBar = this.parent.getContent().querySelector('.e-movablescrollbar');\n if (this.parent.frozenRows) {\n EventHandler.add(frzCols ? mHdr : this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(frzCols ? mHdr : this.header, 'touchmove pointermove', this.onTouchScroll(frzCols ? mCont : this.content), this);\n }\n if (this.parent.isFrozenGrid()) {\n EventHandler.add(mScrollBar, 'scroll', this.onCustomScrollbarScroll(mCont, mHdr), this);\n EventHandler.add(mCont, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mHdr), this);\n EventHandler.add(mHdr, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mCont), this);\n EventHandler.add(this.content, 'scroll', this.onFrozenContentScroll(), this);\n EventHandler.add(mHdr, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(mHdr, 'touchmove pointermove', this.onTouchScroll(mCont), this);\n EventHandler.add(mCont, 'touchstart pointerdown', this.setPageXY(), this);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.add(mCont, 'touchmove pointermove', this.onTouchScroll(mHdr), this);\n }\n }\n else {\n this.contentScrollHandler = this.onContentScroll(this.header);\n this.headerScrollHandler = this.onContentScroll(this.content);\n EventHandler.add(this.content, 'scroll', this.contentScrollHandler, this);\n EventHandler.add(this.header, 'scroll', this.headerScrollHandler, this);\n }\n if (this.parent.aggregates.length) {\n EventHandler.add(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll(this.content), this);\n }\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(true);\n }\n this.refresh();\n this.oneTimeReady = false;\n }\n var table = this.parent.getContentTable();\n var sLeft;\n var sHeight;\n var clientHeight;\n getUpdateUsingRaf(function () {\n sLeft = _this.header.scrollLeft;\n sHeight = table.scrollHeight;\n clientHeight = _this.parent.getContent().clientHeight;\n }, function () {\n var args = { cancel: false };\n _this.parent.notify(checkScrollReset, args);\n if (sHeight < clientHeight) {\n _this.setLastRowCell();\n }\n if (!_this.parent.enableVirtualization && !_this.parent.enableInfiniteScrolling) {\n if (!args.cancel) {\n if ((_this.parent.frozenRows > 0 || _this.parent.isFrozenGrid()) && _this.header.querySelector('.' + literals.movableHeader)) {\n _this.header.querySelector('.' + literals.movableHeader).scrollLeft = _this.previousValues.left;\n }\n else {\n _this.header.scrollLeft = _this.previousValues.left;\n }\n _this.content.scrollLeft = _this.previousValues.left;\n _this.content.scrollTop = _this.previousValues.top;\n }\n }\n if (!_this.parent.enableColumnVirtualization) {\n _this.content.scrollLeft = sLeft;\n }\n if (_this.parent.isFrozenGrid() && _this.header.querySelector('.' + literals.movableHeader)) {\n _this.header.querySelector('.' + literals.movableHeader).scrollLeft =\n _this.content.querySelector('.' + literals.movableContent).scrollLeft;\n }\n });\n this.parent.isPreventScrollEvent = false;\n };\n /**\n * @returns {void} returns void\n * @hidden\n */\n Scroll.prototype.setLastRowCell = function () {\n var table = this.parent.getContentTable();\n if (table.querySelector('tr:nth-last-child(2)')) {\n removeClass(table.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (this.parent.isFrozenGrid()) {\n var mTable = this.parent.getContent().querySelector('.' + literals.movableContent);\n if (mTable.querySelector('tr:nth-last-child(2)')) {\n removeClass(mTable.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n addClass(mTable.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (this.parent.getFrozenRightColumnsCount()) {\n var frTable = this.parent.getContent().querySelector('.e-frozen-right-content');\n if (frTable.querySelector('tr:nth-last-child(2)')) {\n removeClass(frTable.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n addClass(frTable.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n }\n }\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {ScrollCss} returns the ScrollCss\n * @hidden\n */\n Scroll.prototype.getCssProperties = function (rtl) {\n var css = {};\n var enableRtl = isNullOrUndefined(rtl) ? this.parent.enableRtl : rtl;\n css.border = enableRtl ? 'borderLeftWidth' : 'borderRightWidth';\n css.padding = enableRtl ? 'paddingLeft' : 'paddingRight';\n return css;\n };\n Scroll.prototype.ensureOverflow = function (content) {\n content.style.overflowY = this.parent.height === 'auto' ? 'auto' : 'scroll';\n };\n Scroll.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.setPadding();\n this.oneTimeReady = true;\n if (this.parent.height === 'auto') {\n this.removePadding();\n }\n this.wireEvents();\n this.setHeight();\n var width = 'width';\n this.setWidth(!isNullOrUndefined(e.properties[\"\" + width]));\n };\n Scroll.prototype.makeStickyHeader = function () {\n if (this.parent.enableStickyHeader && this.parent.element && this.parent.getContent()) {\n var contentRect = this.parent.getContent().getClientRects()[0];\n if (contentRect) {\n var headerEle = this.parent.getHeaderContent();\n var toolbarEle = this.parent.element.querySelector('.e-toolbar');\n var groupHeaderEle = this.parent.element.querySelector('.e-groupdroparea');\n var height = headerEle.offsetHeight + (toolbarEle ? toolbarEle.offsetHeight : 0) +\n (groupHeaderEle ? groupHeaderEle.offsetHeight : 0);\n var parentTop = this.parentElement.getClientRects()[0].top;\n var top_1 = contentRect.top - (parentTop < 0 ? 0 : parentTop);\n var left = contentRect.left;\n var colMenuEle = document.body.querySelector('#' + this.parent.element.id + '_columnmenu');\n if (top_1 < height && contentRect.bottom > 0) {\n headerEle.classList.add('e-sticky');\n var elemTop = 0;\n if (groupHeaderEle && this.parent.groupSettings.showDropArea) {\n this.setSticky(groupHeaderEle, elemTop, contentRect.width, left, true);\n elemTop += groupHeaderEle.getClientRects()[0].height;\n }\n if (toolbarEle) {\n this.setSticky(toolbarEle, elemTop, contentRect.width, left, true);\n elemTop += toolbarEle.getClientRects()[0].height;\n }\n this.setSticky(headerEle, elemTop, contentRect.width, left, true);\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'fixed';\n colMenuEle.style.top = height + 'px';\n }\n }\n else {\n if (headerEle.classList.contains('e-sticky')) {\n this.setSticky(headerEle, null, null, null, false);\n if (toolbarEle) {\n this.setSticky(toolbarEle, null, null, null, false);\n }\n if (groupHeaderEle) {\n this.setSticky(groupHeaderEle, null, null, null, false);\n }\n var ccDlg = this.parent.element.querySelector('.e-ccdlg');\n if (ccDlg) {\n ccDlg.classList.remove('e-sticky');\n }\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'absolute';\n var topStyle = contentRect.top - parentTop;\n colMenuEle.style.top = topStyle + 'px';\n }\n }\n }\n this.parent.notify(events.stickyScrollComplete, {});\n }\n }\n };\n Scroll.prototype.setSticky = function (ele, top, width, left, isAdd) {\n if (isAdd) {\n ele.style.width = width + 'px';\n ele.classList.add('e-sticky');\n }\n else {\n ele.classList.remove('e-sticky');\n }\n ele.style.top = top != null ? top + 'px' : '';\n ele.style.left = left !== null ? parseInt(ele.style.left, 10) !== left ? left + 'px' : ele.style.left : '';\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.removeEventListener();\n //Remove Dom event\n var cont = this.parent.getContent().querySelector('.' + literals.content);\n EventHandler.remove(cont, 'scroll', this.onContentScroll);\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(false);\n }\n //Remove padding\n this.removePadding();\n removeClass([this.parent.getHeaderContent().querySelector('.' + literals.headerContent)], literals.headerContent);\n removeClass([cont], literals.content);\n //Remove height\n cont.style.height = '';\n //Remove width\n this.parent.element.style.width = '';\n };\n /**\n * Function to get the scrollbar width of the browser.\n *\n * @returns {number} return the width\n * @hidden\n */\n Scroll.getScrollBarWidth = function () {\n return getScrollBarWidth();\n };\n return Scroll;\n}());\nexport { Scroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { compile } from '@syncfusion/ej2-base';\nimport { getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { Property, Collection, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the Grid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.templateFn = {};\n return _this;\n }\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the Function\n * @hidden\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - specifies the helper\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n if (this.groupFooterTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.GroupSummary)] = { fn: compile(this.groupFooterTemplate, helper),\n property: 'groupFooterTemplate' };\n }\n if (this.groupCaptionTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = { fn: compile(this.groupCaptionTemplate, helper),\n property: 'groupCaptionTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - returns the Object\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupFooterTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupCaptionTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\n/**\n * Configures the aggregate rows.\n */\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","import { Browser, remove, EventHandler, isUndefined, closest, classList } from '@syncfusion/ej2-base';\nimport { parentsUntil, isGroupAdaptive } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n */\nvar Clipboard = /** @class */ (function () {\n /**\n * Constructor for the Grid clipboard module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function Clipboard(parent, serviceLocator) {\n this.copyContent = '';\n this.isSelect = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.keyPressed, this.keyDownHandler, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.onEmpty, this.initialEnd, this);\n EventHandler.add(this.parent.element, 'keydown', this.pasteHandler, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.keyPressed, this.keyDownHandler);\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.onEmpty, this.initialEnd);\n EventHandler.remove(this.parent.element, 'keydown', this.pasteHandler);\n };\n Clipboard.prototype.clickHandler = function (e) {\n var target = e.target;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n target = parentsUntil(target, 'e-rowcell');\n };\n Clipboard.prototype.pasteHandler = function (e) {\n var _this = this;\n var grid = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (e.keyCode === 67 && isMacLike && e.metaKey && !grid.isEdit) {\n this.copy();\n }\n if (e.keyCode === 86 && (e.ctrlKey || (isMacLike && e.metaKey)) && !grid.isEdit) {\n var target = closest(document.activeElement, '.' + literals.rowCell);\n if (!target || !grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow' || !this.clipBoardTextArea) {\n return;\n }\n this.activeElement = document.activeElement;\n this.clipBoardTextArea.value = '';\n var x_1 = window.scrollX;\n var y_1 = window.scrollY;\n this.clipBoardTextArea.focus();\n setTimeout(function () {\n _this.activeElement.focus();\n window.scrollTo(x_1, y_1);\n _this.paste(_this.clipBoardTextArea.value, _this.parent.getSelectedRowCellIndexes()[0].rowIndex, _this.parent.getSelectedRowCellIndexes()[0].cellIndexes[0]);\n }, 10);\n }\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n Clipboard.prototype.paste = function (data, rowIndex, colIndex) {\n var grid = this.parent;\n var cIdx = colIndex;\n var rIdx = rowIndex;\n var col;\n var value;\n var isAvail;\n if (!grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n var rows = data.split('\\n');\n var cols;\n var dataRows = grid.getDataRows();\n var mRows;\n var frRows;\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen) {\n mRows = grid.getMovableDataRows();\n if (grid.getFrozenRightColumnsCount()) {\n frRows = grid.getFrozenRightDataRows();\n }\n }\n for (var r = 0; r < rows.length; r++) {\n cols = rows[parseInt(r.toString(), 10)].split('\\t');\n cIdx = colIndex;\n if ((r === rows.length - 1 && rows[parseInt(r.toString(), 10)] === '') || isUndefined(grid.getRowByIndex(rIdx))) {\n cIdx++;\n break;\n }\n for (var c = 0; c < cols.length; c++) {\n isAvail = grid.getCellFromIndex(rIdx, cIdx);\n if (isFrozen) {\n var fTr = dataRows[parseInt(rIdx.toString(), 10)];\n var mTr = mRows[parseInt(rIdx.toString(), 10)];\n isAvail = !fTr.querySelector('[data-colindex=\"' + cIdx + '\"]') ?\n mTr.querySelector('[data-colindex=\"' + cIdx + '\"]') : true;\n if (frRows && !isAvail) {\n var frTr = frRows[parseInt(rIdx.toString(), 10)];\n isAvail = frTr.querySelector('[data-colindex=\"' + cIdx + '\"]');\n }\n }\n if (!isAvail) {\n cIdx++;\n break;\n }\n col = grid.getColumnByIndex(cIdx);\n value = col.getParser() ? col.getParser()(cols[parseInt(c.toString(), 10)]) : cols[parseInt(c.toString(), 10)];\n if (col.allowEditing && !col.isPrimaryKey && !col.template) {\n var args = {\n column: col,\n data: value,\n rowIndex: rIdx\n };\n this.parent.trigger(events.beforePaste, args);\n rIdx = args.rowIndex;\n if (!args.cancel) {\n if (grid.editModule) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.data));\n }\n else {\n grid.editModule.updateCell(rIdx, col.field, args.data);\n }\n }\n }\n }\n cIdx++;\n }\n rIdx++;\n }\n grid.selectionModule.selectCellsByRange({ rowIndex: rowIndex, cellIndex: colIndex }, { rowIndex: rIdx - 1, cellIndex: cIdx - 1 });\n var cell = this.parent.getCellFromIndex(rIdx - 1, cIdx - 1);\n if (cell) {\n classList(cell, ['e-focus', 'e-focused'], []);\n }\n };\n Clipboard.prototype.initialEnd = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.parent.off(events.contentReady, this.initialEnd);\n this.clipBoardTextArea = this.parent.createElement('textarea', {\n className: 'e-clipboard',\n styles: 'opacity: 0',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('ClipBoard') }\n });\n this.parent.element.appendChild(this.clipBoardTextArea);\n };\n Clipboard.prototype.keyDownHandler = function (e) {\n if (e.action === 'ctrlPlusC') {\n this.copy();\n }\n else if (e.action === 'ctrlShiftPlusH') {\n this.copy(true);\n }\n };\n Clipboard.prototype.setCopyData = function (withHeader) {\n if (window.getSelection().toString() === '') {\n var isFrozen = this.parent.isFrozenGrid();\n this.clipBoardTextArea.value = this.copyContent = '';\n var mRows = void 0;\n var frRows = void 0;\n var rows = this.parent.getDataRows();\n if (isFrozen) {\n mRows = this.parent.getMovableDataRows();\n if (this.parent.getFrozenMode() === literals.leftRight || this.parent.getFrozenMode() === 'Right') {\n frRows = this.parent.getFrozenRightRows();\n }\n }\n if (this.parent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.parent.getSelectedRowIndexes().sort(function (a, b) { return a - b; });\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.parent.getVisibleColumns().length; i++) {\n headerTextArray[parseInt(i.toString(), 10)] = this.parent\n .getVisibleColumns()[parseInt(i.toString(), 10)].headerText;\n }\n this.getCopyData(headerTextArray, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var leftCols = [];\n var rightCols = [];\n var movableCols = [];\n if (isFrozen) {\n movableCols.push.apply(movableCols, [].slice.call(mRows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight) {\n rightCols.push.apply(rightCols, [].slice.call(frRows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n if (this.parent.getFrozenMode() === 'Left' || this.parent.getFrozenMode() === literals.leftRight ||\n (this.parent.isFrozenGrid() && !this.parent.getFrozenMode())) {\n leftCols.push.apply(leftCols, [].slice.call(rows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n }\n else {\n var idx = selectedIndexes[parseInt(i.toString(), 10)];\n if (!isGroupAdaptive(this.parent) && (this.parent.enableVirtualization ||\n (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) ||\n (this.parent.groupSettings.columns.length && this.parent.groupSettings.enableLazyLoading))) {\n idx = rows.map(function (m) { return m.getAttribute('data-rowindex'); }).indexOf(selectedIndexes[parseInt(i.toString(), 10)].toString());\n }\n leftCols.push.apply(leftCols, [].slice.call(rows[parseInt(idx.toString(), 10)].querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n var cells = leftCols.concat(movableCols).concat(rightCols);\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n var obj = this.checkBoxSelection();\n if (obj.status) {\n if (withHeader) {\n var headers = [];\n for (var i = 0; i < obj.colIndexes.length; i++) {\n headers.push(this.parent.getColumnHeaderByIndex(obj.colIndexes[parseInt(i.toString(), 10)]));\n }\n this.getCopyData(headers, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < obj.rowIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[obj.rowIndexes[parseInt(i.toString(), 10)]].\n getElementsByClassName('e-cellselectionbackground'));\n if (isFrozen) {\n cells.push.apply(cells, [].slice.call(mRows[obj.rowIndexes[parseInt(i.toString(), 10)]]\n .getElementsByClassName('e-cellselectionbackground')));\n if (frRows) {\n cells.push.apply(cells, [].slice.call(frRows[obj.rowIndexes[parseInt(i.toString(), 10)]]\n .getElementsByClassName('e-cellselectionbackground')));\n }\n }\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n this.getCopyData([].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground')), true, '\\n', withHeader);\n }\n }\n var args = {\n data: this.copyContent,\n cancel: false\n };\n this.parent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this.copyContent = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this.isSelect = true;\n }\n };\n Clipboard.prototype.getCopyData = function (cells, isCell, splitKey, withHeader) {\n var isElement = typeof cells[0] !== 'string';\n for (var j = 0; j < cells.length; j++) {\n if (withHeader && isCell) {\n var colIdx = parseInt(cells[parseInt(j.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n this.copyContent += this.parent.getColumns()[parseInt(colIdx.toString(), 10)].headerText + '\\n';\n }\n if (isElement) {\n if (!cells[parseInt(j.toString(), 10)].classList.contains('e-hide')) {\n this.copyContent += cells[parseInt(j.toString(), 10)].innerText;\n }\n }\n else {\n this.copyContent += cells[parseInt(j.toString(), 10)];\n }\n if (j < cells.length - 1) {\n this.copyContent += splitKey;\n }\n }\n };\n /**\n * Copy selected rows or cells data into clipboard.\n *\n * @returns {void}\n * @param {boolean} withHeader - Specifies whether the column header data need to be copied or not.\n */\n Clipboard.prototype.copy = function (withHeader) {\n if (document.queryCommandSupported('copy') && this.clipBoardTextArea) {\n this.setCopyData(withHeader);\n document.execCommand('copy');\n this.clipBoardTextArea.blur();\n }\n if (this.isSelect) {\n window.getSelection().removeAllRanges();\n this.isSelect = false;\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Clipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n *\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.destroy = function () {\n this.removeEventListener();\n if (this.clipBoardTextArea) {\n remove(this.clipBoardTextArea);\n }\n };\n Clipboard.prototype.checkBoxSelection = function () {\n var gridObj = this.parent;\n var obj = { status: false };\n if (gridObj.selectionSettings.mode === 'Cell') {\n var rowCellIndxes = gridObj.getSelectedRowCellIndexes();\n var str = void 0;\n var rowIndexes = [];\n var i = void 0;\n for (i = 0; i < rowCellIndxes.length; i++) {\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n rowIndexes.push(rowCellIndxes[parseInt(i.toString(), 10)].rowIndex);\n }\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n if (!str) {\n str = JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort());\n }\n if (str !== JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort())) {\n break;\n }\n }\n }\n rowIndexes.sort(function (a, b) { return a - b; });\n if (i === rowCellIndxes.length) {\n obj = { status: true, rowIndexes: rowIndexes, colIndexes: rowCellIndxes[0].cellIndexes };\n }\n }\n return obj;\n };\n return Clipboard;\n}());\nexport { Clipboard };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { Component, ChildProperty, Browser, closest, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, append, remove, classList, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Property, Collection, Complex, Event, NotifyPropertyChanges, L10n } from '@syncfusion/ej2-base';\nimport { EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner, Tooltip } from '@syncfusion/ej2-popups';\nimport { iterateArrayOrObject, prepareColumns, parentsUntil, wrap, templateCompiler, isGroupAdaptive, refreshForeignData } from './util';\nimport { getRowHeight, setColumnIndex, Global, ispercentageWidth, renderMovable, getNumberFormat, getTransformValues } from './util';\nimport { setRowElements, resetRowIndex, compareChanges, getCellByColAndRowIndex, performComplexDataOperation } from './util';\nimport * as events from '../base/constant';\nimport { Render } from '../renderer/render';\nimport { RenderType } from './enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { CellRendererFactory } from '../services/cell-render-factory';\nimport { ServiceLocator } from '../services/service-locator';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RendererFactory } from '../services/renderer-factory';\nimport { ColumnWidthService } from '../services/width-controller';\nimport { AriaService } from '../services/aria-service';\nimport { FocusStrategy } from '../services/focus-strategy';\nimport { PageSettings } from '../models/page-settings';\nimport { ColumnChooserSettings } from '../models/column-chooser-settings';\nimport { Selection } from '../actions/selection';\nimport { Search } from '../actions/search';\nimport { ShowHide } from '../actions/show-hide';\nimport { Scroll } from '../actions/scroll';\nimport { Print } from '../actions/print';\nimport { AggregateRow } from '../models/aggregate';\nimport { Clipboard } from '../actions/clipboard';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n __decorate([\n Property(false)\n ], SortDescriptor.prototype, \"isFromGroup\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of Grid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n/**\n * Represents the predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property(false)\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"condition\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the infinite scroll behavior of Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n/**\n * Configures the filtering behavior of the Grid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property('OnEnter')\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableCaseSensitivity\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"showFilterBarOperator\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n/**\n * Configures the selection behavior of the Grid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enableSimpleMultiRowSelection\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"allowColumnSelection\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Configures the search behavior of the Grid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('')\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreAccent\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n/**\n * Configures the row drop settings of the Grid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\n/**\n * Configures the text wrap settings of the Grid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n/**\n * Configures the resize behavior of the Grid.\n */\nvar ResizeSettings = /** @class */ (function (_super) {\n __extends(ResizeSettings, _super);\n function ResizeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], ResizeSettings.prototype, \"mode\", void 0);\n return ResizeSettings;\n}(ChildProperty));\nexport { ResizeSettings };\n/**\n * Configures the group behavior of the Grid.\n */\nvar GroupSettings = /** @class */ (function (_super) {\n __extends(GroupSettings, _super);\n function GroupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showDropArea\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showToggleButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showGroupedColumn\", void 0);\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showUngroupButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"disablePageWiseAggregates\", void 0);\n __decorate([\n Property([])\n ], GroupSettings.prototype, \"columns\", void 0);\n __decorate([\n Property()\n ], GroupSettings.prototype, \"captionTemplate\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"enableLazyLoading\", void 0);\n return GroupSettings;\n}(ChildProperty));\nexport { GroupSettings };\n/**\n * Configures the edit behavior of the Grid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Normal')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n/**\n * Configures the Loading Indicator of the Grid.\n */\nvar LoadingIndicator = /** @class */ (function (_super) {\n __extends(LoadingIndicator, _super);\n function LoadingIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Spinner')\n ], LoadingIndicator.prototype, \"indicatorType\", void 0);\n return LoadingIndicator;\n}(ChildProperty));\nexport { LoadingIndicator };\n/**\n * Represents the Grid component.\n * ```html\n *
    \n * \n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n __extends(Grid, _super);\n /**\n * Constructor for creating the component\n *\n * @param {GridModel} options - specifies the options\n * @param {string | HTMLElement} element - specifies the element\n * @hidden\n */\n function Grid(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPreventScrollEvent = false;\n _this.inViewIndexes = [];\n _this.keyA = false;\n _this.frozenRightCount = 0;\n _this.frozenLeftCount = 0;\n _this.tablesCount = 1;\n _this.movableCount = 0;\n _this.visibleFrozenLeft = 0;\n _this.visibleFrozenRight = 0;\n _this.visibleMovable = 0;\n _this.frozenLeftColumns = [];\n _this.frozenRightColumns = [];\n _this.movableColumns = [];\n _this.media = {};\n _this.isFreezeRefresh = false;\n /** @hidden */\n _this.tableIndex = 0;\n _this.componentRefresh = Component.prototype.refresh;\n /** @hidden */\n _this.isVirtualAdaptive = false;\n /** @hidden */\n /**\n * * If `requireTemplateRef` is set to false in the load event, then the template element can't be accessed in grid queryCellInfo, and rowDataBound events.\n * * By default, React's grid queryCellInfo and rowDataBound events allow access to the template element.\n * * Avoid accessing the template elements in the grid queryCellInfo and rowDataBound events to improve rendering performance by setting this value as false.\n *\n * @default true\n */\n _this.requireTemplateRef = true;\n /** @hidden */\n _this.vRows = [];\n /** @hidden */\n _this.vcRows = [];\n /** @hidden */\n _this.vGroupOffsets = {};\n /** @hidden */\n _this.rowUid = 0;\n /** @hidden */\n _this.isManualRefresh = false;\n /** @hidden */\n _this.isAutoFitColumns = false;\n /** @hidden */\n _this.enableDeepCompare = false;\n /** @hidden */\n _this.totalDataRecordsCount = 0;\n /** @hidden */\n _this.disableSelectedRecords = [];\n /** @hidden */\n _this.partialSelectedRecords = [];\n /** @hidden */\n _this.islazyloadRequest = false;\n /** @hidden */\n _this.lockcolPositionCount = 0;\n /** @hidden */\n _this.prevPageMoving = false;\n /** @hidden */\n _this.pageTemplateChange = false;\n /** @hidden */\n _this.isAutoGen = false;\n _this.mediaBindInstance = {};\n /** @hidden */\n _this.commandDelIndex = undefined;\n /** @hidden */\n _this.asyncTimeOut = 50;\n /** @hidden */\n _this.isExportGrid = false;\n // enable/disable logger for MVC & Core\n _this.enableLogger = true;\n _this.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', _this.mergePersistGridData, _this);\n return _this;\n }\n Grid_1 = Grid;\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n */\n Grid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'groupSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'scrollPosition'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent'],\n groupSettings: ['showDropArea', 'showToggleButton', 'showGroupedColumn', 'showUngroupButton',\n 'disablePageWiseAggregates', 'hideCaptionCount'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: [], scrollPosition: []\n };\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[parseInt(i.toString(), 10)]];\n for (var _i = 0, _a = ignoreOnPersist[keyEntity[parseInt(i.toString(), 10)]]; _i < _a.length; _i++) {\n var val = _a[_i];\n delete currentObject[\"\" + val];\n }\n }\n var temp = this.pageSettings.template;\n var settings = Object.assign({ template: undefined }, this.pageSettings);\n this.setProperties({ pageSettings: settings }, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n delete this.groupSettings['properties']['captionTemplate'];\n }\n this.pageTemplateChange = !isNullOrUndefined(this.pagerTemplate);\n var persistData = this.addOnPersist(keyEntity);\n settings.template = temp;\n this.setProperties({ pageSettings: settings }, true);\n return persistData;\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} Returns the module Declaration\n * @hidden\n */\n Grid.prototype.requiredModules = function () {\n this.setFrozenCount();\n this.enableInfiniteAggrgate();\n var modules = [];\n if (this.isDestroyed) {\n return modules;\n }\n if (this.allowFiltering) {\n modules.push({\n member: 'filter',\n args: [this, this.filterSettings, this.serviceLocator]\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport',\n args: [this, this.serviceLocator]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this, this.sortSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this, this.selectionSettings, this.serviceLocator]\n });\n }\n modules.push({\n member: 'resize',\n args: [this]\n });\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.allowGrouping) {\n modules.push({\n member: 'group',\n args: [this, this.groupSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.aggregates.length) {\n modules.push({ member: 'aggregate', args: [this, this.serviceLocator] });\n }\n if (this.isDetail()) {\n modules.push({\n member: 'detailRow',\n args: [this, this.serviceLocator]\n });\n }\n if (this.toolbar || this.toolbarTemplate) {\n modules.push({\n member: 'toolbar',\n args: [this, this.serviceLocator]\n });\n }\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n modules.push({\n member: 'virtualscroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.getFrozenColumns() || this.frozenRows || this.frozenRightCount || this.frozenLeftCount) {\n modules.push({ member: 'freeze', args: [this, this.serviceLocator] });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this, this.serviceLocator]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this, this.serviceLocator]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n Grid.prototype.extendRequiredModules = function (modules) {\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.groupSettings.enableLazyLoading) {\n modules.push({\n member: 'lazyLoadGroup',\n args: [this, this.serviceLocator]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'columnChooser',\n args: [this, this.serviceLocator]\n });\n }\n if (this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator] });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this] });\n }\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.preRender = function () {\n this.serviceLocator = new ServiceLocator;\n this.initProperties();\n this.initializeServices();\n };\n Grid.prototype.initProperties = function () {\n this.isInitial = true;\n this.sortedColumns = [];\n this.inViewIndexes = [];\n this.mediaCol = [];\n this.isInitialLoad = false;\n this.allowServerDataBinding = false;\n this.ignoreCollectionWatch = true;\n this.mergeCells = {};\n this.isEdit = false;\n this.checkAllRows = 'None';\n this.isCheckBoxSelection = false;\n this.isPersistSelection = false;\n this.componentRefresh = Component.prototype.refresh;\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.defaultLocale = {\n EmptyRecord: 'No records to display',\n True: 'true',\n False: 'false',\n InvalidFilterMessage: 'Invalid Filter Data',\n GroupDropArea: 'Drag a column header here to group its column',\n UnGroup: 'Click here to ungroup',\n UnGroupButton: 'Click here to ungroup',\n GroupDisable: 'Grouping is disabled for this column',\n FilterbarTitle: '\\'s filter bar cell',\n EmptyDataSourceError: 'DataSource must not be empty at initial load since columns are generated from dataSource in AutoGenerate Column Grid',\n // Toolbar Items\n Add: 'Add',\n Edit: 'Edit',\n Cancel: 'Cancel',\n Update: 'Update',\n Delete: 'Delete',\n Print: 'Print',\n Pdfexport: 'PDF Export',\n Excelexport: 'Excel Export',\n Wordexport: 'Word Export',\n Csvexport: 'CSV Export',\n Search: 'Search',\n Columnchooser: 'Columns',\n Save: 'Save',\n Item: 'item',\n Items: 'items',\n EditOperationAlert: 'No records selected for edit operation',\n DeleteOperationAlert: 'No records selected for delete operation',\n SaveButton: 'Save',\n OKButton: 'OK',\n CancelButton: 'Cancel',\n EditFormTitle: 'Details of ',\n AddFormTitle: 'Add New Record',\n BatchSaveConfirm: 'Are you sure you want to save changes?',\n BatchSaveLostChanges: 'Unsaved changes will be lost. Are you sure you want to continue?',\n ConfirmDelete: 'Are you sure you want to Delete Record?',\n CancelEdit: 'Are you sure you want to Cancel the changes?',\n ChooseColumns: 'Choose Column',\n SearchColumns: 'search columns',\n Matchs: 'No matches found',\n FilterButton: 'Filter',\n ClearButton: 'Clear',\n StartsWith: 'Starts With',\n NotStartsWith: 'Does Not Start With',\n Like: 'Like',\n EndsWith: 'Ends With',\n NotEndsWith: 'Does Not End With',\n Contains: 'Contains',\n NotContains: 'Does Not Contain',\n IsNull: 'Null',\n NotNull: 'Not Null',\n IsEmpty: 'Empty',\n IsNotEmpty: 'Not Empty',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n ChooseDate: 'Choose a Date',\n EnterValue: 'Enter the value',\n Copy: 'Copy',\n Group: 'Group by this column',\n Ungroup: 'Ungroup by this column',\n GroupButton: 'Group button',\n UnGroupAria: 'ungroup button',\n GroupSeperator: 'Separator for the grouped columns',\n UnGroupIcon: 'ungroup the grouped column ',\n GroupedSortIcon: 'sort the grouped column ',\n GroupedDrag: 'Drag the grouped column',\n GroupCaption: ' is groupcaption cell',\n CheckBoxLabel: 'checkbox',\n autoFitAll: 'Autofit all columns',\n autoFit: 'Autofit this column',\n AutoFitAll: 'Autofit all columns',\n AutoFit: 'Autofit this column',\n Export: 'Export',\n FirstPage: 'First Page',\n LastPage: 'Last Page',\n PreviousPage: 'Previous Page',\n NextPage: 'Next Page',\n SortAscending: 'Sort Ascending',\n SortDescending: 'Sort Descending',\n EditRecord: 'Edit Record',\n DeleteRecord: 'Delete Record',\n FilterMenu: 'Filter',\n SelectAll: 'Select All',\n AddCurrentSelection: 'Add current selection to filter',\n Blanks: 'Blanks',\n FilterTrue: 'True',\n FilterFalse: 'False',\n NoResult: 'No matches found',\n ClearFilter: 'Clear Filter',\n Clear: 'Clear',\n NumberFilter: 'Number Filters',\n TextFilter: 'Text Filters',\n DateFilter: 'Date Filters',\n DateTimeFilter: 'DateTime Filters',\n MatchCase: 'Match Case',\n Between: 'Between',\n CustomFilter: 'Custom Filter',\n CustomFilterPlaceHolder: 'Enter the value',\n CustomFilterDatePlaceHolder: 'Choose a date',\n AND: 'AND',\n OR: 'OR',\n ShowRowsWhere: 'Show rows where:',\n FilterMenuDialogARIA: 'Filter menu dialog',\n ExcelFilterDialogARIA: 'Excel filter dialog',\n DialogEditARIA: 'Edit dialog',\n ColumnChooserDialogARIA: 'Column chooser',\n ColumnMenuDialogARIA: 'Column menu dialog',\n CustomFilterDialogARIA: 'Customer filter dialog',\n SortAtoZ: 'Sort A to Z',\n SortZtoA: 'Sort Z to A',\n SortByOldest: 'Sort by Oldest',\n SortByNewest: 'Sort by Newest',\n SortSmallestToLargest: 'Sort Smallest to Largest',\n SortLargestToSmallest: 'Sort Largest to Smallest',\n Sort: 'Sort',\n FilterDescription: 'Press Alt Down to open filter Menu',\n SortDescription: 'Press Enter to sort',\n ColumnMenuDescription: 'Press Alt Down to open Column Menu',\n GroupDescription: 'Press Ctrl space to group',\n ColumnHeader: ' column header ',\n TemplateCell: ' is template cell',\n CommandColumnAria: 'is Command column column header ',\n DialogEdit: 'Dialog edit',\n ClipBoard: 'clipboard',\n AscendingText: 'Ascending',\n DescendingText: 'Descending',\n NoneText: 'None',\n Expanded: 'Expanded',\n Collapsed: 'Collapsed'\n };\n this.keyConfigs = {\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n rightArrow: 'rightarrow',\n leftArrow: 'leftarrow',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftRight: 'shift+rightarrow',\n shiftLeft: 'shift+leftarrow',\n home: 'home',\n end: 'end',\n escape: 'escape',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n ctrlAltPageUp: 'ctrl+alt+pageup',\n ctrlAltPageDown: 'ctrl+alt+pagedown',\n altPageUp: 'alt+pageup',\n altPageDown: 'alt+pagedown',\n altDownArrow: 'alt+downarrow',\n altUpArrow: 'alt+uparrow',\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlPlusA: 'ctrl+A',\n ctrlPlusP: 'ctrl+P',\n insert: 'insert',\n delete: 'delete',\n f2: 'f2',\n enter: 'enter',\n ctrlEnter: 'ctrl+enter',\n shiftEnter: 'shift+enter',\n tab: 'tab',\n shiftTab: 'shift+tab',\n space: 'space',\n ctrlPlusC: 'ctrl+C',\n ctrlShiftPlusH: 'ctrl+shift+H',\n ctrlSpace: 'ctrl+space',\n ctrlLeftArrow: 'ctrl+leftarrow',\n ctrlRightArrow: 'ctrl+rightarrow'\n };\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.render = function () {\n this.log(['module_missing', 'promise_enabled', 'locale_missing', 'check_datasource_columns']);\n this.ariaService.setOptions(this.element, { datarole: 'grid' });\n createSpinner({ target: this.element, cssClass: this.cssClass ? this.cssClass : null }, this.createElement);\n this.renderModule = new Render(this, this.serviceLocator);\n this.searchModule = new Search(this);\n this.scrollModule = new Scroll(this);\n this.notify(events.initialLoad, {});\n if (this.getDataModule().dataManager.dataSource.offline === true || this.getDataModule().dataManager.dataSource.url === undefined) {\n this.isVirtualAdaptive = true;\n }\n if (this.isReact) {\n var args = { requireTemplateRef: this.requireTemplateRef };\n this.trigger(events.load, args);\n if (!args.requireTemplateRef) {\n this.requireTemplateRef = args.requireTemplateRef;\n }\n }\n else {\n this.trigger(events.load);\n }\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (this.enablePersistence) {\n this.notify(events.columnsPrepared, {});\n }\n this.getMediaColumns();\n setColumnIndex(this.columns);\n this.checkLockColumns(this.columns);\n this.getColumns();\n this.processModel();\n this.gridRender();\n this.wireEvents();\n this.addListener();\n this.updateDefaultCursor();\n this.updateStackedFilter();\n if (this.loadingIndicator.indicatorType === 'Spinner') {\n this.showSpinner();\n }\n this.notify(events.initialEnd, {});\n if (this.loadingIndicator.indicatorType === 'Shimmer') {\n this.refreshMaskRow();\n }\n if (this.refreshing) {\n this.trigger('created');\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.showSpinner = function () {\n if (!this.isExportGrid) {\n showSpinner(this.element);\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.hideSpinner = function () {\n if (!this.isExportGrid) {\n hideSpinner(this.element);\n }\n };\n Grid.prototype.showMaskRow = function (axisDirection, dialogElement) {\n if (isNullOrUndefined(this.headerModule) || isNullOrUndefined(this.contentModule)) {\n return;\n }\n var gridHeader = this.getHeaderContent().firstChild;\n var gridContent = this.getContent().firstChild;\n var gridFooter = this.getFooterContent();\n if (dialogElement) {\n var dialogHolder = dialogElement.querySelector('.e-checkboxlist');\n var maskRowCount = Math.floor(dialogHolder.getBoundingClientRect().height / this.getRowHeight());\n var maskTemplate = '
    '\n + '
    '\n + this.getShimmerTemplate() + this.getShimmerTemplate() + '
    ';\n dialogHolder.innerHTML = '';\n for (var i = 0; i < maskRowCount; i++) {\n dialogHolder.innerHTML += maskTemplate;\n var maskSpan = [].slice.call(dialogHolder\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n return;\n }\n if ((!this.enableRtl && !this.getHeaderContent().style.paddingRight)\n || (this.enableRtl && !this.getHeaderContent().style.paddingLeft)) {\n gridContent.style.overflowY = 'hidden';\n }\n if (!this.isInitialLoad && !this.getColumns().length) {\n var contentHeight = gridContent.getBoundingClientRect().height;\n var maskTableHeight = contentHeight === 0 ? this.allowPaging ? this.pageSettings.pageSize * this.getRowHeight()\n : window.innerHeight : contentHeight;\n var contentRowCount = Math.ceil(maskTableHeight / this.getRowHeight());\n if (this.rowRenderingMode !== 'Vertical') {\n this.headerMaskTable = this.createEmptyMaskTable(gridHeader, 1);\n }\n this.contentMaskTable = this.createEmptyMaskTable(gridContent, contentRowCount);\n return;\n }\n this.maskRowContentScroll = this.enableVirtualization && axisDirection ? true : false;\n if (!this.contentMaskTable && !(this.isFrozenGrid() && this.enableColumnVirtualization && axisDirection === 'X')) {\n var content = gridContent;\n if (this.isFrozenGrid()) {\n if (!this.isInitialLoad && !this.enableVirtualization && this.frozenRows && this.height !== 'auto') {\n var contentHeight = content.getBoundingClientRect().height - (this.frozenRows * this.getRowHeight());\n content.style.height = contentHeight + 'px';\n }\n content = content.querySelector('.e-frozen-left-content, .e-frozen-right-content');\n }\n else if (this.enableVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n if (!isNullOrUndefined(content.querySelector('tbody'))) {\n this.contentMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n }\n if (!this.headerMaskTable && (this.isFrozenGrid() || (this.enableColumnVirtualization && axisDirection === 'X'))\n && !((this.isFrozenGrid() && ((this.enableVirtualization && axisDirection === 'Y')\n || (this.enableColumnVirtualization && axisDirection === 'X')\n || (this.enableInfiniteScrolling && axisDirection === 'down'))))) {\n var content = gridHeader;\n if (this.isFrozenGrid()) {\n content = content.querySelector('.e-frozen-left-header, .e-frozen-right-header');\n }\n else if (this.enableColumnVirtualization && axisDirection === 'X') {\n content = content.querySelector('.e-virtualtable');\n }\n this.headerMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n if (!this.movableHeaderMaskTable && this.isFrozenGrid() && !((this.enableVirtualization && axisDirection === 'Y')\n || (this.enableInfiniteScrolling && axisDirection === 'down'))) {\n var content = gridHeader.querySelector('.e-movableheader');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.movableHeaderMaskTable = this.createMaskTable(content, this.getMovableContentMaskColumns(), axisDirection);\n }\n if (!this.rightHeaderMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right'\n && !((this.enableVirtualization && axisDirection === 'Y') || (this.enableInfiniteScrolling && axisDirection === 'down'))) {\n this.rightHeaderMaskTable = this.createMaskTable(gridHeader\n .querySelector('.e-frozen-right-header'), this.getRightContentMaskColumns(), axisDirection);\n }\n if (!this.movableContentMaskTable && this.isFrozenGrid()) {\n var content = gridContent.querySelector('.e-movablecontent');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n if (!isNullOrUndefined(content.querySelector('tbody'))) {\n this.movableContentMaskTable = this.createMaskTable(content, this.getMovableContentMaskColumns(), axisDirection);\n }\n }\n if (!this.rightContentMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right') {\n this.rightContentMaskTable = this.createMaskTable(gridContent\n .querySelector('.e-frozen-right-content'), this.getRightContentMaskColumns(), axisDirection);\n }\n if (gridFooter && gridFooter.querySelector('.e-summaryrow')) {\n var gridFooterContent = gridFooter.firstChild;\n if (!this.footerContentMaskTable) {\n var footerContent = gridFooterContent;\n if (this.isFrozenGrid()) {\n footerContent = footerContent.querySelector('.e-frozen-left-footercontent, .e-frozen-right-footercontent');\n }\n this.footerContentMaskTable = this.createMaskTable(footerContent);\n }\n if (this.isFrozenGrid()) {\n if (!this.movableFooterContentMaskTable) {\n this.movableFooterContentMaskTable = this.createMaskTable(gridFooterContent\n .querySelector('.e-movablefootercontent'));\n }\n if (this.getFrozenMode() === 'Left-Right' && !this.rightFooterContentMaskTable) {\n this.rightFooterContentMaskTable = this.createMaskTable(gridFooterContent\n .querySelector('.e-frozen-right-footercontent'));\n }\n }\n }\n if (!(this.enableVirtualization && axisDirection)) {\n EventHandler.add(gridContent, 'scroll', this.translateMaskRow, this);\n }\n };\n Grid.prototype.getContentMaskColumns = function () {\n var columns = this.getColumns();\n if (this.isFrozenGrid()) {\n if (this.getFrozenMode() === 'Left' || this.getFrozenMode() === 'Left-Right') {\n columns = this.frozenColumns ? columns.slice(0, this.frozenColumns) : this.getFrozenLeftColumns();\n }\n else if (this.getFrozenMode() === 'Right') {\n columns = this.getFrozenRightColumns();\n }\n }\n return columns;\n };\n Grid.prototype.getMovableContentMaskColumns = function () {\n var gridColumns = this.getColumns();\n var columns = this.frozenColumns ? gridColumns.slice(this.frozenColumns, gridColumns.length)\n : this.getMovableColumns();\n return columns;\n };\n Grid.prototype.getRightContentMaskColumns = function () {\n return this.getFrozenRightColumns();\n };\n Grid.prototype.createEmptyMaskTable = function (maskElement, rowCount) {\n var table = this.createElement('table', { className: 'e-table e-masked-table' });\n var tbody = this.createElement('tbody', { className: 'e-masked-tbody' });\n var row = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + this.getRowHeight() + 'px;'\n } });\n var cell = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n cell.innerHTML = this.getShimmerTemplate();\n row.appendChild(cell);\n for (var i = 0; i < rowCount; i++) {\n tbody.appendChild(row.cloneNode(true));\n }\n table.appendChild(tbody);\n maskElement.appendChild(table);\n return table;\n };\n Grid.prototype.createMaskTable = function (element, columns, axisDirection) {\n var parentElement = element;\n var header = closest(parentElement, '.e-gridheader') ? true : false;\n var content = closest(parentElement, '.e-gridcontent') ? true : false;\n var footer = closest(parentElement, '.e-gridfooter') ? true : false;\n var gridContent = this.getContent().firstChild;\n var gridContentScrollHeight = gridContent.scrollHeight;\n var table = parentElement.querySelector('table');\n if (this.isFrozenGrid()) {\n if (content) {\n parentElement.style.overflow = 'hidden';\n }\n parentElement.style.position = 'relative';\n }\n var maskTable = table.cloneNode();\n maskTable.removeAttribute('role');\n maskTable.removeAttribute('id');\n maskTable.removeAttribute('aria-multiselectable');\n maskTable.removeAttribute('aria-colcount');\n maskTable.removeAttribute('aria-rowcount');\n maskTable.style.position = 'absolute';\n maskTable.style.zIndex = '1';\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n if (header && !(this.enableColumnVirtualization && axisDirection === 'X')) {\n maskTable.style.transform = 'translate(0px,'\n + table.querySelector('thead').getBoundingClientRect().height + 'px)';\n }\n maskTable.setAttribute('class', 'e-table e-masked-table');\n var maskColgroup = table.querySelector('colgroup').cloneNode(true);\n maskColgroup.removeAttribute('id');\n maskColgroup.setAttribute('class', 'e-masked-colgroup');\n maskTable.appendChild(maskColgroup);\n if (header && this.enableColumnVirtualization && axisDirection === 'X') {\n var row = this.createMaskRow(maskColgroup, columns);\n var thead = table.querySelector('thead');\n var rows = [].slice.call(thead.querySelectorAll('tr'));\n var maskTHead = thead.cloneNode();\n maskTHead.removeAttribute('role');\n maskTHead.setAttribute('class', 'e-masked-thead');\n var rowCount = rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTHead.appendChild(row.cloneNode(true));\n maskTHead.childNodes[parseInt(i.toString(), 10)].style\n .height = rows[parseInt(i.toString(), 10)].getBoundingClientRect().height + 'px';\n }\n maskTable.appendChild(maskTHead);\n }\n var maskTBody = table.querySelector('tbody').cloneNode();\n maskTBody.removeAttribute('role');\n maskTBody.setAttribute('class', 'e-masked-tbody');\n var tbody = table.querySelector('tbody');\n if (content || (header && this.isFrozenGrid())) {\n var rowCountElement = gridContent;\n var rowCount = header && this.isFrozenGrid() ? this.frozenRows\n : Math.ceil(rowCountElement.getBoundingClientRect().height / this.getRowHeight());\n if (tbody.querySelector('.e-emptyrow') || !tbody.childNodes.length || (content && this.childGrid)) {\n var row = this.createMaskRow(maskColgroup, columns);\n var altRow = row.cloneNode(true);\n altRow.classList.add('e-altrow');\n for (var i = 0; i < rowCount; i++) {\n var altNumber = content && this.isFrozenGrid() && this.frozenRows ? this.frozenRows + 1 : 1;\n maskTBody.appendChild((i + altNumber) % 2 === 0 ? altRow.cloneNode(true) : row.cloneNode(true));\n }\n }\n else {\n var rowsQuery = 'tr:not([style*=\"display:none\"]):not([style*=\"display: none\"])';\n var rows = [].slice.call(tbody.querySelectorAll(rowsQuery));\n var addEditRow = tbody.querySelector('.e-addedrow, .e-editedrow');\n var addEditRowIndex = void 0;\n if (addEditRow) {\n addEditRowIndex = rows.indexOf(addEditRow);\n if (addEditRow.classList.contains('e-addedrow')) {\n rows.splice(addEditRowIndex, 2);\n }\n else {\n rows.splice(addEditRowIndex, 1);\n }\n }\n rowCount = (header && this.isFrozenGrid()) || (this.enableVirtualization && axisDirection) ? rows.length\n : rowCount <= rows.length ? rowCount : rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTBody.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n if (addEditRow && addEditRow.classList.contains('e-editedrow') && addEditRowIndex < rowCount) {\n var addEditMaskRow = maskTBody.childNodes[parseInt(addEditRowIndex.toString(), 10)];\n addEditMaskRow.style.height = this.getRowHeight() + 'px';\n addEditMaskRow.classList.add('e-row');\n if (addEditRow.classList.contains('e-altrow')) {\n addEditMaskRow.classList.add('e-altrow');\n }\n }\n }\n }\n maskTable.appendChild(maskTBody);\n if (footer) {\n var tfoot = table.querySelector('tfoot');\n var maskTFoot = tfoot.cloneNode();\n maskTFoot.setAttribute('class', 'e-masked-tfoot');\n var rows = [].slice.call(tfoot.querySelectorAll('tr'));\n for (var i = 0; i < rows.length; i++) {\n maskTFoot.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n maskTable.appendChild(maskTFoot);\n }\n parentElement.insertBefore(maskTable, parentElement.firstChild);\n if (header && this.isFrozenGrid() && tbody\n .getBoundingClientRect().height < maskTable.querySelector('tbody').getBoundingClientRect().height) {\n var maskTableHolderHeight = maskTable.querySelector('tbody')\n .getBoundingClientRect().height - tbody.getBoundingClientRect().height;\n var maskTableHolder = this.createElement('div', { className: 'e-masked-table-holder', attrs: {\n style: 'height: ' + maskTableHolderHeight + 'px;'\n } });\n parentElement.appendChild(maskTableHolder);\n }\n else if (header && this.isFrozenGrid() && !(this.enableColumnVirtualization && axisDirection === 'X')) {\n maskTable.style.height = parentElement\n .getBoundingClientRect().height - table.querySelector('thead').getBoundingClientRect().height + 'px';\n }\n if (content && !(this.enableVirtualization && axisDirection)) {\n var minScrollTop = gridContentScrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = gridContent.scrollTop <= minScrollTop ? gridContent.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(parentElement, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n return maskTable;\n };\n Grid.prototype.applyMaskRow = function (row, rowHeight) {\n var maskRow = row;\n maskRow.removeAttribute('role');\n maskRow.removeAttribute('aria-rowindex');\n maskRow.removeAttribute('data-rowindex');\n maskRow.removeAttribute('data-uid');\n maskRow.classList.add('e-masked-row');\n maskRow.style.height = rowHeight + 'px';\n var maskCells = [].slice.call(maskRow.childNodes);\n for (var i = 0; i < maskCells.length; i++) {\n var maskCell = maskCells[parseInt(i.toString(), 10)];\n var displayAsCheckBoxCell = maskCell.firstChild && maskCell.firstChild.classList\n && maskCell.firstChild.classList.contains('e-checkbox-wrapper');\n maskCell.removeAttribute('role');\n maskCell.removeAttribute('tabindex');\n maskCell.removeAttribute('aria-label');\n maskCell.removeAttribute('data-colindex');\n maskCell.removeAttribute('aria-colindex');\n maskCell.removeAttribute('index');\n maskCell.removeAttribute('ej-mappingname');\n maskCell.removeAttribute('ej-mappingvalue');\n maskCell.removeAttribute('e-mappinguid');\n maskCell.removeAttribute('aria-expanded');\n maskCell.classList.add('e-masked-cell');\n maskCell.innerHTML = this.getShimmerTemplate();\n if (maskCell.classList.contains('e-recordplusexpand') || maskCell.classList.contains('e-recordpluscollapse')) {\n maskCell.firstChild.classList.add('e-mask-group-intent');\n }\n else if (maskCell.classList.contains('e-gridchkbox') || displayAsCheckBoxCell) {\n maskCell.firstChild.classList.add('e-mask-checkbox-intent');\n }\n else if (maskCell.classList.contains('e-rowdragdrop')) {\n maskCell.firstChild.classList.add('e-mask-drag-intent');\n }\n else if (maskCell.classList.contains('e-indentcell')) {\n maskCell.innerHTML = '';\n }\n }\n return maskRow;\n };\n Grid.prototype.createMaskRow = function (refColgroup, refColumns) {\n var colgroup = refColgroup;\n var columns = refColumns;\n var row = this.createElement('tr', { className: 'e-masked-row e-row' });\n if (this.rowRenderingMode !== 'Vertical') {\n row.style.height = this.getRowHeight() + 'px';\n }\n var td = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n for (var i = 0, colIndex = 0; i < colgroup.childNodes.length; i++) {\n var col = colgroup.childNodes[parseInt(i.toString(), 10)];\n var localTD = td.cloneNode();\n localTD.innerHTML = this.getShimmerTemplate();\n if (!(col.classList.contains('e-group-intent') || col.classList.contains('e-detail-intent')\n || col.classList.contains('e-drag-intent'))) {\n if (this.rowRenderingMode === 'Vertical' && columns[parseInt(colIndex.toString(), 10)]) {\n localTD.setAttribute('data-cell', columns[parseInt(colIndex.toString(), 10)].headerText ?\n columns[parseInt(colIndex.toString(), 10)].headerText : columns[parseInt(colIndex.toString(), 10)].field);\n }\n if (col.style.display === 'none') {\n localTD.classList.add('e-hide');\n }\n else {\n localTD.style.textAlign = columns[parseInt(colIndex.toString(), 10)]\n && columns[parseInt(colIndex.toString(), 10)].textAlign ?\n columns[parseInt(colIndex.toString(), 10)].textAlign.toLowerCase()\n : this.enableRtl ? 'right' : 'left';\n if (columns[parseInt(colIndex.toString(), 10)] && (columns[parseInt(colIndex.toString(), 10)].type === 'checkbox'\n || columns[parseInt(colIndex.toString(), 10)].displayAsCheckBox)) {\n localTD.firstChild.classList.add('e-mask-checkbox-intent');\n }\n }\n colIndex++;\n }\n else {\n if (col.classList.contains('e-group-intent')) {\n localTD.firstChild.classList.add('e-mask-group-intent');\n }\n else if (col.classList.contains('e-detail-intent')) {\n localTD.firstChild.classList.add('e-mask-detail-intent');\n }\n else if (col.classList.contains('e-drag-intent')) {\n localTD.firstChild.classList.add('e-mask-drag-intent');\n }\n }\n row.appendChild(localTD);\n }\n return row;\n };\n Grid.prototype.getShimmerTemplate = function () {\n if (this.maskRowContentScroll) {\n return '';\n }\n return '';\n };\n Grid.prototype.addShimmerEffect = function () {\n this.maskRowContentScroll = false;\n var maskSpan = [].slice.call(this.element.querySelectorAll('.e-mask:not(.e-shimmer-wave)'));\n for (var i = 0; i < maskSpan.length; i++) {\n if (maskSpan[parseInt(i.toString(), 10)]) {\n maskSpan[parseInt(i.toString(), 10)].classList.add('e-shimmer-wave');\n }\n }\n };\n Grid.prototype.translateMaskRow = function (e) {\n var target = e.target;\n var maskTables = target.querySelectorAll('.e-masked-table');\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n var minScrollTop = target.scrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = target.scrollTop <= minScrollTop ? target.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(maskTable, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n }\n };\n Grid.prototype.removeMaskRow = function () {\n if (!isNullOrUndefined(this.contentModule)) {\n var gridContent = this.getContent().firstChild;\n EventHandler.remove(gridContent, 'scroll', this.translateMaskRow);\n }\n var maskTables = [this.headerMaskTable, this.movableHeaderMaskTable, this.rightHeaderMaskTable,\n this.contentMaskTable, this.movableContentMaskTable, this.rightContentMaskTable, this.footerContentMaskTable,\n this.movableFooterContentMaskTable, this.rightFooterContentMaskTable];\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n if (this.isFrozenGrid() && !closest(maskTable, '.e-gridfooter')) {\n var parent_1 = maskTable.parentElement;\n parent_1.style.overflow = '';\n parent_1.style.position = '';\n if (closest(maskTable, '.e-frozen-left-header') || closest(maskTable, '.e-movableheader')\n || closest(maskTable, '.e-frozen-right-header')) {\n var maskTableHolder = parent_1.querySelector('.e-masked-table-holder');\n if (maskTableHolder) {\n remove(maskTableHolder);\n }\n }\n }\n remove(maskTable);\n }\n }\n this.headerMaskTable = null;\n this.movableHeaderMaskTable = null;\n this.rightHeaderMaskTable = null;\n this.contentMaskTable = null;\n this.movableContentMaskTable = null;\n this.rightContentMaskTable = null;\n this.footerContentMaskTable = null;\n this.movableFooterContentMaskTable = null;\n this.rightFooterContentMaskTable = null;\n };\n Grid.prototype.refreshMaskRow = function () {\n var gridHeader = this.getHeaderContent().firstChild;\n var gridContent = this.getContent().firstChild;\n if (!this.isInitialLoad && !this.getColumns().length) {\n return;\n }\n if (this.contentMaskTable && gridContent.querySelector('.e-masked-table')) {\n var content = gridContent;\n if (this.isFrozenGrid()) {\n content = content.querySelector('.e-frozen-left-content, .e-frozen-right-content');\n }\n else if (this.enableVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n if (this.headerMaskTable && this.isFrozenGrid()) {\n this.refreshMaskRowColgroupWidth(gridHeader.querySelector('.e-frozen-left-header, .e-frozen-right-header'));\n }\n if (this.movableHeaderMaskTable && this.isFrozenGrid()) {\n var content = gridHeader.querySelector('.e-movableheader');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n if (this.rightHeaderMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right') {\n this.refreshMaskRowColgroupWidth(gridHeader.querySelector('.e-frozen-right-header'));\n }\n if (this.movableContentMaskTable && this.isFrozenGrid()) {\n var content = gridContent.querySelector('.e-movablecontent');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n if (this.rightContentMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right') {\n this.refreshMaskRowColgroupWidth(gridContent.querySelector('.e-frozen-right-content'));\n }\n };\n Grid.prototype.refreshMaskRowColgroupWidth = function (content) {\n var table = content.querySelector('table:not(.e-masked-table)');\n var colgroup = table.querySelector(literals.colGroup).cloneNode(true);\n var maskTable = content.querySelector('.e-masked-table');\n colgroup.removeAttribute('id');\n colgroup.setAttribute('class', 'e-masked-colgroup');\n for (var i = 0; i < colgroup.childNodes.length; i++) {\n colgroup.childNodes[parseInt(i.toString(), 10)].removeAttribute('class');\n }\n remove(maskTable.querySelector('.e-masked-colgroup'));\n maskTable.insertBefore(colgroup, maskTable.firstChild);\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n };\n Grid.prototype.updateStackedFilter = function () {\n if (this.allowFiltering && this.filterSettings.type === 'FilterBar' &&\n this.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.getHeaderContent().classList.add('e-stackedfilter');\n }\n else {\n this.getHeaderContent().classList.remove('e-stackedfilter');\n }\n };\n Grid.prototype.getMediaColumns = function () {\n if (!this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n if (!isNullOrUndefined(gcol)) {\n for (var index = 0; index < gcol.length; index++) {\n if (!isNullOrUndefined(gcol[parseInt(index.toString(), 10)].hideAtMedia)\n && (isNullOrUndefined(gcol[parseInt(index.toString(), 10)].visible)\n || gcol[parseInt(index.toString(), 10)].visible)) {\n this.pushMediaColumn(gcol[parseInt(index.toString(), 10)], index);\n }\n }\n }\n }\n };\n Grid.prototype.pushMediaColumn = function (col, index) {\n this.mediaCol.push(col);\n this.media[col.uid] = window.matchMedia(col.hideAtMedia);\n this.mediaQueryUpdate(index, this.media[col.uid]);\n this.mediaBindInstance[parseInt(index.toString(), 10)] = this.mediaQueryUpdate.bind(this, index);\n this.media[col.uid].addListener(this.mediaBindInstance[parseInt(index.toString(), 10)]);\n };\n /**\n * @param {Column} col - specifies the column\n * @returns {void}\n * @hidden\n */\n Grid.prototype.updateMediaColumns = function (col) {\n if (!this.enableColumnVirtualization) {\n var index = this.getColumnIndexByUid(col.uid);\n for (var i = 0; i < this.mediaCol.length; i++) {\n if (col.uid === this.mediaCol[parseInt(i.toString(), 10)].uid) {\n this.mediaCol.splice(i, 1);\n return;\n }\n }\n this.pushMediaColumn(col, index);\n }\n };\n /**\n * @param {number} columnIndex - specifies the column index\n * @param {MediaQueryList} e - specifies the MediaQueryList\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mediaQueryUpdate = function (columnIndex, e) {\n var col = this.getColumns()[parseInt(columnIndex.toString(), 10)];\n if (this.mediaCol.some(function (mediaColumn) { return mediaColumn.uid === col.uid; })) {\n col.visible = e.matches;\n if (this.isInitialLoad) {\n this.invokedFromMedia = true;\n if (col.visible) {\n this.showHider.show(col.headerText, 'headerText');\n }\n else {\n this.showHider.hide(col.headerText, 'headerText');\n }\n }\n }\n };\n Grid.prototype.refreshMediaCol = function () {\n this.isInitialLoad = true;\n var footerContent = this.element.querySelector('.' + literals.gridFooter);\n if (this.aggregates.length && this.element.scrollHeight > this.height && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n var checkboxColumn = this.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length && this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n this.isCheckBoxSelection = false;\n }\n if (this.rowRenderingMode === 'Vertical') {\n if (this.enableHover) {\n this.setProperties({ enableAdaptiveUI: true, enableHover: false }, true);\n removeClass([this.element], 'e-gridhover');\n }\n }\n if (this.enableAdaptiveUI && this.scrollModule) {\n this.scrollModule.refresh();\n }\n };\n Grid.prototype.removeMediaListener = function () {\n for (var i = 0; i < this.mediaCol.length; i++) {\n this.media[this.mediaCol[parseInt(i.toString(), 10)].uid]\n .removeListener(this.mediaBindInstance[this.mediaCol[parseInt(i.toString(), 10)].index]);\n }\n };\n /**\n * For internal use only - Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.eventInitializer = function () {\n //eventInitializer\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @function destroy\n * @returns {void}\n */\n Grid.prototype.destroy = function () {\n var gridElement = this.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n this.removeMediaListener();\n this.notify(events.destroy, {});\n this.destroyDependentModules();\n if (this.isReact || this.isVue) {\n this.destroyTemplate(['template']);\n }\n if (hasGridChild) {\n _super.prototype.destroy.call(this);\n }\n this.toolTipObj.destroy();\n if (this.isReact && !Browser.isIE) {\n this.element.innerHTML = '';\n }\n var modules = ['renderModule', 'headerModule', 'contentModule', 'valueFormatterService',\n 'serviceLocator', 'ariaService', 'keyboardModule', 'widthService', 'searchModule', 'showHider',\n 'scrollModule', 'printModule', 'clipboardModule', 'focusModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[parseInt(i.toString(), 10)]]) {\n this[modules[parseInt(i.toString(), 10)]] = null;\n }\n }\n this.element.innerHTML = '';\n classList(this.element, [], ['e-rtl', 'e-gridhover', 'e-responsive', 'e-default', 'e-device', 'e-grid-min-height']);\n this.isFreezeRefresh = false;\n };\n Grid.prototype.destroyDependentModules = function () {\n var gridElement = this.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.scrollModule.destroy();\n this.keyboardModule.destroy();\n this.focusModule.destroy();\n this.clipboardModule.destroy();\n this.printModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Grid.prototype.getModuleName = function () {\n return 'grid';\n };\n Grid.prototype.enableBoxSelection = function () {\n if (this.enableAutoFill) {\n this.selectionSettings.cellSelectionMode = 'BoxWithBorder';\n this.element.classList.add('e-afenabled');\n }\n else {\n this.element.classList.remove('e-afenabled');\n }\n };\n Grid.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {GridModel} newProp - Defines new properties\n * @param {GridModel} oldProp - Defines old properties\n * @returns {void}\n * @hidden\n */\n Grid.prototype.onPropertyChanged = function (newProp, oldProp) {\n var requireRefresh = false;\n var requireGridRefresh = false;\n var freezeRefresh = false;\n var checkCursor;\n var args = { requestType: 'refresh' };\n var childGridParent = null;\n var parentInstance = null;\n if (this.isDestroyed) {\n return;\n }\n this.log('module_missing');\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n var properties = Object.keys(newProp);\n if (properties.indexOf('columns') > -1) {\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n }\n this.updateColumnObject();\n requireGridRefresh = true;\n }\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'allowPaging':\n this.notify(events.uiUpdate, { module: 'pager', enable: this.allowPaging });\n requireRefresh = true;\n break;\n case 'pageSettings':\n if (this.pageTemplateChange) {\n this.pageTemplateChange = false;\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n break;\n }\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n if (isNullOrUndefined(newProp.pageSettings.currentPage) && isNullOrUndefined(newProp.pageSettings.pageSize)\n && isNullOrUndefined(newProp.pageSettings.totalRecordsCount)\n || !isNullOrUndefined(oldProp.pageSettings) &&\n ((newProp.pageSettings.currentPage !== oldProp.pageSettings.currentPage)\n && !this.enableColumnVirtualization && !this.enableVirtualization\n && this.pageSettings.totalRecordsCount <= this.pageSettings.pageSize)) {\n requireRefresh = true;\n }\n break;\n case 'allowSorting':\n this.notify(events.uiUpdate, { module: 'sort', enable: this.allowSorting });\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'allowFiltering':\n this.updateStackedFilter();\n this.notify(events.uiUpdate, { module: 'filter', enable: this.allowFiltering });\n requireRefresh = true;\n if (this.filterSettings.type !== 'FilterBar') {\n this.refreshHeader();\n }\n break;\n case 'height':\n case 'width':\n this.notify(events.uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\n if (this.allowPaging) {\n this.pagerModule.refresh();\n }\n break;\n case 'allowReordering':\n this.headerModule.refreshUI();\n checkCursor = true;\n break;\n case 'allowRowDragAndDrop':\n this.notify(events.uiUpdate, { module: 'rowDragAndDrop', enable: this.allowRowDragAndDrop });\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'allowSelection':\n this.notify(events.uiUpdate, { module: 'selection', enable: this.allowSelection });\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enableAutoFill':\n if (this.selectionModule) {\n this.enableBoxSelection();\n this.selectionModule.updateAutoFillPosition();\n }\n break;\n case 'rowTemplate':\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n requireRefresh = true;\n break;\n case 'detailTemplate':\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n requireRefresh = true;\n break;\n case 'allowGrouping':\n this.notify(events.uiUpdate, { module: 'group', enable: this.allowGrouping });\n this.headerModule.refreshUI();\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'enableInfiniteScrolling':\n case 'childGrid':\n requireRefresh = true;\n childGridParent = this.parentDetails ? document.querySelector(\"#\" + this.parentDetails.parentID) : null;\n parentInstance = childGridParent ? childGridParent.ej2_instances[0] : null;\n if (this.childGrid && parentInstance && isNullOrUndefined(parentInstance.childGrid.childGrid)) {\n var childGridObject = Object.assign({}, parentInstance.childGrid, { childGrid: newProp.childGrid });\n parentInstance.setProperties({ childGrid: childGridObject }, true);\n while (!isNullOrUndefined(parentInstance.parentDetails)) {\n var currentParent = document.querySelector(\"#\" + parentInstance.parentDetails.parentID);\n var currentParentInstance = currentParent ? currentParent.ej2_instances[0] : null;\n if (currentParentInstance) {\n var currentChildObject = Object.assign({}, currentParentInstance.childGrid);\n currentChildObject.childGrid = parentInstance.childGrid;\n currentParentInstance.setProperties({ childGrid: currentChildObject }, true);\n }\n parentInstance = currentParentInstance;\n }\n }\n break;\n case 'toolbar':\n this.notify(events.uiUpdate, { module: 'toolbar' });\n break;\n case 'groupSettings':\n this.notify(events.inBoundModelChanged, {\n module: 'group', properties: newProp.groupSettings,\n oldProperties: oldProp.groupSettings\n });\n break;\n case 'aggregates':\n if (!this.aggregates.length && this.allowGrouping && this.groupSettings.columns.length) {\n requireRefresh = true;\n }\n this.notify(events.uiUpdate, { module: 'aggregate', properties: newProp });\n break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'currencyCode':\n case 'locale':\n this.log('frozen_rows_columns');\n freezeRefresh = true;\n requireGridRefresh = true;\n break;\n case 'query':\n if (!this.getDataModule().isQueryInvokedFromData) {\n requireRefresh = true;\n }\n this.getDataModule().isQueryInvokedFromData = false;\n break;\n case 'autoFit':\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n else {\n this.restoreAdjustColumns();\n }\n break;\n default:\n this.extendedPropertyChange(prop, newProp, requireGridRefresh);\n }\n }\n if (checkCursor) {\n this.updateDefaultCursor();\n }\n if (requireGridRefresh) {\n if (freezeRefresh || this.getFrozenColumns() || this.frozenRows) {\n this.freezeRefresh();\n }\n else {\n this.refresh();\n }\n }\n else if (requireRefresh) {\n this.notify(events.modelChanged, args);\n requireRefresh = false;\n this.maintainSelection(newProp.selectedRowIndex);\n }\n };\n Grid.prototype.extendedPropertyChange = function (prop, newProp, requireGridRefresh) {\n switch (prop) {\n case 'enableRtl':\n this.updateRTL();\n if (this.allowPaging) {\n this.element.querySelector('.e-gridpager').ej2_instances[0].enableRtl = newProp.enableRtl;\n this.element.querySelector('.e-gridpager').ej2_instances[0].dataBind();\n }\n if (this.height !== 'auto') {\n this.scrollModule.removePadding(!newProp.enableRtl);\n this.scrollModule.setPadding();\n }\n if (this.toolbar && this.toolbarModule) {\n this.toolbarModule.getToolbar().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.toolbarModule.getToolbar().ej2_instances[0].dataBind();\n }\n if (this.contextMenuItems && this.contextMenuModule) {\n this.contextMenuModule.getContextMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.contextMenuModule.getContextMenu().ej2_instances[0].dataBind();\n }\n if (this.showColumnMenu && this.columnMenuModule) {\n this.columnMenuModule.getColumnMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.columnMenuModule.getColumnMenu().ej2_instances[0].dataBind();\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n this.refreshHeader();\n }\n this.notify(events.rtlUpdated, {});\n break;\n case 'enableAltRow':\n this.renderModule.refresh();\n break;\n case 'allowResizing':\n this.headerModule.refreshUI();\n this.updateResizeLines();\n break;\n case 'rowHeight':\n if (this.rowHeight) {\n addClass([this.element], 'e-grid-min-height');\n }\n else {\n removeClass([this.element], 'e-grid-min-height');\n }\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'gridLines':\n this.updateGridLines();\n break;\n case 'showColumnMenu':\n this.headerModule.refreshUI();\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: true });\n break;\n case 'columnMenuItems':\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: this.columnMenuItems });\n break;\n case 'contextMenuItems':\n this.notify(events.uiUpdate, { module: 'contextMenu', enable: this.contextMenuItems });\n break;\n case 'showColumnChooser':\n this.notify(events.uiUpdate, { module: 'columnChooser', enable: this.showColumnChooser });\n break;\n case 'filterSettings':\n this.updateStackedFilter();\n this.notify(events.inBoundModelChanged, { module: 'filter', properties: newProp.filterSettings });\n break;\n case 'searchSettings':\n this.notify(events.inBoundModelChanged, { module: 'search', properties: newProp.searchSettings });\n break;\n case 'sortSettings':\n this.notify(events.inBoundModelChanged, { module: 'sort' });\n break;\n case 'selectionSettings':\n this.notify(events.inBoundModelChanged, { module: 'selection', properties: newProp.selectionSettings });\n break;\n case 'editSettings':\n this.notify(events.inBoundModelChanged, { module: 'edit', properties: newProp.editSettings });\n break;\n case 'allowTextWrap':\n case 'textWrapSettings':\n if (this.allowTextWrap) {\n this.applyTextWrap();\n }\n else {\n this.removeTextWrap();\n }\n this.notify(events.freezeRender, { case: 'textwrap', isModeChg: (prop === 'textWrapSettings') });\n break;\n case 'dataSource':\n // eslint-disable-next-line no-case-declarations\n var pending_1 = this.getDataModule().getState();\n if (Object.getPrototypeOf(newProp).deepWatch) {\n var pKeyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0, props = Object.keys(newProp.dataSource); i < props.length; i++) {\n this.setRowData(getValue(pKeyField, this.dataSource[props[parseInt(i.toString(), 10)]]), this.dataSource[props[parseInt(i.toString(), 10)]]);\n }\n }\n else if (pending_1.isPending) {\n var gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n var names = (pending_1.group || []);\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[parseInt(i.toString(), 10)], pending_1.aggregates || []);\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count,\n aggregates: this.dataSource.aggregates\n };\n this.getDataModule().setState({});\n pending_1.resolver(this.dataSource);\n }\n else {\n this.getDataModule().setState({ isDataChanged: false });\n this.notify(events.dataSourceModified, {});\n if (!requireGridRefresh) {\n this.renderModule.refresh();\n if (this.isCheckBoxSelection) {\n this.notify(events.beforeRefreshOnDataChange, {});\n }\n }\n }\n this.scrollRefresh();\n break;\n case 'enableHover':\n // eslint-disable-next-line no-case-declarations\n var action = newProp.enableHover ? addClass : removeClass;\n action([this.element], 'e-gridhover');\n break;\n case 'selectedRowIndex':\n if (!this.isSelectedRowIndexUpdating) {\n this.selectRow(newProp.selectedRowIndex);\n }\n this.isSelectedRowIndexUpdating = false;\n break;\n case 'resizeSettings':\n this.widthService.setWidthToTable();\n break;\n case 'enableAdaptiveUI':\n this.notify(events.setFullScreenDialog, {});\n break;\n case 'rowRenderingMode':\n this.enableVerticalRendering();\n this.notify(events.rowModeChange, {});\n this.refresh();\n break;\n case 'enableStickyHeader':\n this.scrollModule.addStickyListener(newProp.enableStickyHeader);\n break;\n }\n };\n Grid.prototype.maintainSelection = function (index) {\n var _this = this;\n if (index !== -1) {\n var fn_1 = function () {\n _this.selectRow(index);\n _this.off(events.contentReady, fn_1);\n };\n this.on(events.contentReady, fn_1, this);\n }\n };\n /**\n * @param {Object} prop - Defines the property\n * @param {boolean} muteOnChange - Defines the mute on change\n * @returns {void}\n * @private\n */\n Grid.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n var filterSettings = 'filterSettings';\n if (prop[\"\" + filterSettings] && this.filterModule && muteOnChange) {\n this.filterModule.refreshFilter();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setTablesCount = function () {\n var frozenCols = this.getFrozenColumns();\n var frozenLeft = this.getFrozenLeftColumnsCount();\n var frozenRight = this.getFrozenRightColumnsCount();\n if (frozenCols && !frozenLeft && !frozenRight) {\n this.tablesCount = 2;\n }\n else if (!frozenCols && (frozenLeft || frozenRight)) {\n if ((frozenLeft && !frozenRight) || (frozenRight && !frozenLeft)) {\n this.tablesCount = 2;\n }\n else if (frozenLeft && frozenRight) {\n this.tablesCount = 3;\n }\n }\n };\n /**\n * @hidden\n * @returns {number} - Returns the tables count\n */\n Grid.prototype.getTablesCount = function () {\n return this.tablesCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateDefaultCursor = function () {\n var headerCells = [].slice.call(this.getHeaderContent().querySelectorAll('.e-headercell:not(.e-stackedheadercell)'));\n var stdHdrCell = [].slice.call(this.getHeaderContent().getElementsByClassName('e-stackedheadercell'));\n var cols = this.getColumns();\n if (this.enableColumnVirtualization && this.getFrozenColumns()) {\n var cells = this.contentModule.getHeaderCells();\n headerCells = cells.length ? cells : headerCells;\n }\n for (var i = 0; i < headerCells.length; i++) {\n var cell = headerCells[parseInt(i.toString(), 10)];\n if (this.allowGrouping || this.allowReordering || this.allowSorting) {\n if (!cols[parseInt(i.toString(), 10)].allowReordering || !cols[parseInt(i.toString(), 10)].allowSorting\n || !cols[parseInt(i.toString(), 10)].allowGrouping) {\n cell.classList.add('e-defaultcursor');\n }\n else {\n cell.classList.add('e-mousepointer');\n }\n }\n }\n for (var count = 0; count < stdHdrCell.length; count++) {\n if (this.allowReordering) {\n stdHdrCell[parseInt(count.toString(), 10)].classList.add('e-mousepointer');\n }\n }\n };\n Grid.prototype.updateColumnModel = function (columns, isRecursion) {\n for (var i = 0, len = columns.length; i < len; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.updateColumnModel(columns[parseInt(i.toString(), 10)].columns, true);\n }\n else {\n this.columnModel.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (isNullOrUndefined(isRecursion) || !isRecursion) {\n this.updateColumnLevelFrozen();\n this.updateFrozenColumns();\n this.updateLockableColumns();\n }\n };\n Grid.prototype.updateColumnLevelFrozen = function () {\n var cols = this.columnModel;\n var leftCols = [];\n var rightCols = [];\n var movableCols = [];\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var col = cols[parseInt(i.toString(), 10)];\n if (col.freeze === 'Left') {\n col.freezeTable = literals.frozenLeft;\n leftCols.push(col);\n }\n else if (col.freeze === 'Right') {\n col.freezeTable = literals.frozenRight;\n rightCols.push(col);\n }\n else {\n col.freezeTable = 'movable';\n movableCols.push(col);\n }\n }\n this.columnModel = leftCols.concat(movableCols).concat(rightCols);\n }\n };\n Grid.prototype.updateFrozenColumns = function () {\n if (this.frozenLeftCount || this.frozenRightCount) {\n return;\n }\n var cols = this.columnModel;\n var directFrozenCount = this.frozenColumns;\n var totalFrozenCount = this.getFrozenColumns();\n var count = 0;\n for (var i = 0, len = cols.length; i < len; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var col = cols[parseInt(i.toString(), 10)];\n if (directFrozenCount) {\n if (i < directFrozenCount) {\n col.freezeTable = literals.frozenLeft;\n }\n else {\n col.freezeTable = 'movable';\n }\n }\n if (col.isFrozen && i >= directFrozenCount) {\n col.freezeTable = literals.frozenLeft;\n cols.splice(this.frozenColumns + count, 0, cols.splice(i, 1)[0]);\n count++;\n }\n else if (totalFrozenCount && !directFrozenCount) {\n col.freezeTable = 'movable';\n }\n if (!totalFrozenCount && !directFrozenCount && !isNullOrUndefined(col.freezeTable)) {\n col.freezeTable = undefined;\n }\n }\n };\n Grid.prototype.getFrozenLeftCount = function () {\n return this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n };\n Grid.prototype.isFrozenGrid = function () {\n return this.getFrozenColumns() !== 0 || this.getFrozenLeftColumnsCount() !== 0 || this.getFrozenRightColumnsCount() !== 0;\n };\n Grid.prototype.getFrozenMode = function () {\n return this.frozenName;\n };\n Grid.prototype.updateLockableColumns = function () {\n var cols = this.columnModel;\n var frozenCount = 0;\n var movableCount = 0;\n var frozenColumns = this.getFrozenColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].lockColumn) {\n if (i < frozenColumns) {\n cols.splice(frozenCount, 0, cols.splice(i, 1)[0]);\n frozenCount++;\n }\n else {\n cols.splice(frozenColumns + movableCount, 0, cols.splice(i, 1)[0]);\n movableCount++;\n }\n }\n }\n };\n Grid.prototype.checkLockColumns = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n this.checkLockColumns(cols[parseInt(i.toString(), 10)].columns);\n }\n else if (cols[parseInt(i.toString(), 10)].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n };\n /**\n * Gets the columns from the Grid.\n *\n * @param {boolean} isRefresh - Defines the boolean whether to refresh\n * @returns {Column[]} - returns the column\n */\n Grid.prototype.getColumns = function (isRefresh) {\n var _this = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this.groupSettings.columns.length; }).filter(function (v) { return v > -1; });\n var vLen = inview.length;\n if (!this.enableColumnVirtualization || isNullOrUndefined(this.columnModel) || this.columnModel.length === 0 || isRefresh) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n var columns = vLen === 0 ? this.columnModel :\n this.columnModel.slice(inview[0], inview[vLen - 1] + 1);\n if (this.contentModule && this.enableColumnVirtualization && this.isFrozenGrid() && inview.length\n && inview[0] > 0) {\n var frozenCols = this.contentModule.ensureFrozenCols(columns);\n columns = frozenCols;\n }\n return columns;\n };\n /**\n * @private\n * @param {string} stackedHeader - Defines the stacked header\n * @param {Column[]} col - Defines the column\n * @returns {Column} Returns the Column\n */\n Grid.prototype.getStackedHeaderColumnByHeaderText = function (stackedHeader, col) {\n for (var i = 0; i < col.length; i++) {\n var individualColumn = col[parseInt(i.toString(), 10)];\n if (individualColumn.field === stackedHeader || individualColumn.headerText === stackedHeader) {\n this.stackedColumn = individualColumn;\n break;\n }\n else if (individualColumn.columns) {\n this.getStackedHeaderColumnByHeaderText(stackedHeader, individualColumn.columns);\n }\n }\n return this.stackedColumn;\n };\n /**\n * @private\n * @returns {number[]} Returns the column indexes\n */\n Grid.prototype.getColumnIndexesInView = function () {\n return this.inViewIndexes;\n };\n /**\n * @private\n * @returns {Query} - returns the query\n */\n Grid.prototype.getQuery = function () {\n return this.query;\n };\n /**\n * @private\n * @returns {object} - returns the locale constants\n */\n Grid.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * @param {number[]} indexes - specifies the indexes\n * @returns {void}\n * @private\n */\n Grid.prototype.setColumnIndexesInView = function (indexes) {\n this.inViewIndexes = indexes;\n };\n /**\n * Gets the visible columns from the Grid.\n *\n * @returns {Column[]} returns the column\n */\n Grid.prototype.getVisibleColumns = function () {\n return this.getCurrentVisibleColumns();\n };\n /**\n * Gets the header div of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getHeaderContent = function () {\n return this.headerModule.getPanel();\n };\n /**\n * Sets the header div of the Grid to replace the old header.\n *\n * @param {Element} element - Specifies the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderContent = function (element) {\n this.headerModule.setPanel(element);\n };\n /**\n * Gets the content table of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getContentTable = function () {\n return this.contentModule.getTable();\n };\n /**\n * Sets the content table of the Grid to replace the old content table.\n *\n * @param {Element} element - Specifies the Grid content table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContentTable = function (element) {\n this.contentModule.setTable(element);\n };\n /**\n * Gets the content div of the Grid.\n *\n * @returns {Element} Returns the element\n */\n Grid.prototype.getContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * Sets the content div of the Grid to replace the old Grid content.\n *\n * @param {Element} element - Specifies the Grid content.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContent = function (element) {\n this.contentModule.setPanel(element);\n };\n /**\n * Gets the header table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getHeaderTable = function () {\n return this.headerModule.getTable();\n };\n /**\n * Sets the header table of the Grid to replace the old one.\n *\n * @param {Element} element - Specifies the Grid header table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderTable = function (element) {\n this.headerModule.setTable(element);\n };\n /**\n * Gets the footer div of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContent = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement;\n };\n /**\n * Gets the footer table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContentTable = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement.firstChild.firstChild;\n };\n /**\n * Gets the pager of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getPager = function () {\n return this.gridPager; //get element from pager\n };\n /**\n * Sets the pager of the Grid to replace the old pager.\n *\n * @param {Element} element - Specifies the Grid pager.\n *\n * @returns {void}\n */\n Grid.prototype.setGridPager = function (element) {\n this.gridPager = element;\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getRowByIndex = function (index) {\n if (this.enableVirtualization && this.groupSettings.enableLazyLoading) {\n return this.lazyLoadRender.getRowByIndex(index);\n }\n else {\n return this.contentModule.getRowByIndex(index);\n }\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableRowByIndex = function (index) {\n return this.contentModule.getMovableRowByIndex(index);\n };\n /**\n * Gets a frozen tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenRowByIndex = function (index) {\n return this.getFrozenDataRows()[parseInt(index.toString(), 10)];\n };\n /**\n * Gets all the data rows of the Grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.contentModule.getFrozenRightRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - specifies the element\n *\n * @returns {RowInfo} returns the row info\n */\n Grid.prototype.getRowInfo = function (target) {\n var ele = target;\n var args = { target: target };\n if (!isNullOrUndefined(target) && isNullOrUndefined(parentsUntil(ele, 'e-detailrowcollapse')\n && isNullOrUndefined(parentsUntil(ele, 'e-recordplusexpand')))) {\n var cell = closest(ele, '.' + literals.rowCell);\n if (!cell) {\n var row = closest(ele, '.' + literals.row);\n if (!isNullOrUndefined(row) && !row.classList.contains('e-addedrow')) {\n var rowObj = this.getRowObjectFromUID(row.getAttribute('data-uid'));\n var rowIndex = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n args = { row: row, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute(literals.dataColIndex), 10);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex)) {\n var row_1 = closest(cell, '.' + literals.row);\n var rowIndex = parseInt(row_1.getAttribute(literals.dataRowIndex), 10);\n var frzCols = this.getFrozenColumns();\n var tableName = this.columnModel[parseInt(cellIndex.toString(), 10)].getFreezeTableName();\n var rows = this.contentModule.getRows();\n var index = cellIndex + this.getIndentCount();\n if (this.isFrozenGrid()) {\n if (tableName === literals.frozenLeft) {\n rows = this.contentModule.getRows();\n }\n else if (tableName === 'movable') {\n index = cellIndex - frzCols - this.frozenLeftCount;\n rows = this.contentModule.getMovableRows();\n }\n else if (tableName === literals.frozenRight) {\n index = cellIndex - (this.frozenLeftCount + this.movableCount);\n rows = this.contentModule.getFrozenRightRows();\n }\n }\n var rowsObject = rows.filter(function (r) { return r.uid === row_1.getAttribute('data-uid'); });\n var rowData = {};\n var column = void 0;\n if (Object.keys(rowsObject).length) {\n rowData = rowsObject[0].data;\n column = rowsObject[0].cells[parseInt(index.toString(), 10)].column;\n }\n args = { cell: cell, cellIndex: cellIndex, row: row_1, rowIndex: rowIndex, rowData: rowData, column: column, target: target };\n }\n }\n return args;\n };\n /**\n * Gets the Grid's movable content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getMovableRows = function () {\n return this.contentModule.getMovableRowElements();\n };\n /**\n * Gets the Grid's frozen right content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getFrozenRightRows = function () {\n return this.contentModule.getFrozenRightRowElements();\n };\n /**\n * Gets all the Grid's data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getDataRows = function () {\n return this.getAllDataRows();\n };\n /**\n * @param {boolean} includeAdd - specifies includeAdd\n * @returns {Element[]} returns the element\n * @hidden\n */\n Grid.prototype.getAllDataRows = function (includeAdd) {\n if (isNullOrUndefined(this.getContentTable().querySelector(literals.tbody))) {\n return [];\n }\n var tbody = this.isFrozenGrid() ? this.getFrozenLeftContentTbody()\n : this.getContentTable().querySelector(literals.tbody);\n var rows = [].slice.call(tbody.children);\n if (this.frozenRows) {\n var hdrTbody = this.isFrozenGrid() ? this.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody)\n : this.getHeaderTable().querySelector(literals.tbody);\n var freezeRows = [].slice.call(hdrTbody.children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * @param {HTMLElement[]} fRows - Defines the frozen Rows\n * @param {HTMLElement[]} mrows - Defines the movable Rows\n * @returns {HTMLElement[]} Returns the element\n * @hidden\n */\n Grid.prototype.addMovableRows = function (fRows, mrows) {\n for (var i = 0, len = mrows.length; i < len; i++) {\n fRows.push(mrows[parseInt(i.toString(), 10)]);\n }\n return fRows;\n };\n Grid.prototype.generateDataRows = function (rows, includAdd) {\n var dRows = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].classList.contains(literals.row)\n && (!rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow') || includAdd)) {\n if (this.isCollapseStateEnabled()) {\n dRows[parseInt(rows[parseInt(i.toString(), 10)].getAttribute('data-rowindex'), 10)] = rows[parseInt(i.toString(), 10)];\n }\n else {\n dRows.push(rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n return dRows;\n };\n /**\n * Gets all the Grid's movable table data rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getMovableDataRows = function () {\n return this.getAllMovableDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllMovableDataRows = function (includeAdd) {\n if (!this.isFrozenGrid()) {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen table data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getFrozenDataRows = function () {\n return this.getAllFrozenDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllFrozenDataRows = function (includeAdd) {\n var rows = [].slice.call(this.getContent().querySelector('.' + literals.frozenContent).querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n */\n Grid.prototype.getFrozenRightDataRows = function () {\n return this.getAllFrozenRightDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n if (this.getFrozenMode() !== 'Right' && this.getFrozenMode() !== 'Left-Right') {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n *\n * @returns {void}\n */\n Grid.prototype.setCellValue = function (key, field, value) {\n var cells = 'cells';\n var rowData = 'data';\n var rowIdx = 'index';\n var rowuID = 'uid';\n var isRight = this.getFrozenMode() === 'Right';\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var cell = new CellRenderer(this, this.serviceLocator);\n var fieldIdx = this.getColumnIndexByField(field);\n var col = this.getColumnByField(field);\n var rowObjects = col.getFreezeTableName() === 'movable' ? this.contentModule.getMovableRows() :\n col.getFreezeTableName() === 'frozen-right' ? this.getFrozenRightRowsObject() : this.contentModule.getRows();\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var tr = selectedRow ? this.element.querySelector('[data-uid=' + selectedRow[\"\" + rowuID] + ']') : null;\n if (!isNullOrUndefined(tr)) {\n if (typeof value === 'string') {\n value = this.sanitize(value);\n }\n setValue(field, value, selectedRow[\"\" + rowData]);\n var left = this.getFrozenLeftColumnsCount() || this.getFrozenColumns();\n var movable = this.getMovableColumnsCount();\n if (this.isRowDragable() && !isRight) {\n left++;\n }\n var frIdx = left + movable;\n var td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n if (!isNullOrUndefined(td)) {\n var Idx = col.getFreezeTableName() === 'movable' ? left : col.getFreezeTableName() === 'frozen-right' ? frIdx : 0;\n if (this.groupSettings.columns.length) {\n fieldIdx = fieldIdx + this.groupSettings.columns.length;\n }\n if (this.childGrid || this.detailTemplate) {\n fieldIdx++;\n }\n if (this.isRowDragable() && !isRight) {\n fieldIdx++;\n }\n var sRow = selectedRow[\"\" + cells][fieldIdx - Idx];\n cell.refreshTD(td, sRow, selectedRow[\"\" + rowData], { index: selectedRow[\"\" + rowIdx] });\n if (this.isReact) {\n td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n /* tslint:disable:no-string-literal */\n if (!isNullOrUndefined(selectedRow) && !isNullOrUndefined(selectedRow['changes'])) {\n selectedRow['changes'][\"\" + field] = value;\n }\n /* tslint:disable:no-string-literal */\n this.trigger(events.queryCellInfo, {\n cell: td, column: col, data: selectedRow[\"\" + rowData]\n });\n if (this.isReact && td.getAttribute('tabindex') === '0' && td.classList.contains('e-focused')) {\n td.focus();\n }\n }\n }\n else {\n return;\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @param {boolean} renderTemplates - Defines renderTemplates need to invoke\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactColumnTemplateByUid = function (columnUid, renderTemplates) {\n var _this = this;\n if (this.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var isChildGrid = _this.childGrid && _this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = isChildGrid ? _this.getContentTable().querySelectorAll('.e-row') :\n _this.getDataRows();\n _this.refreshReactTemplateTD(rows, isChildGrid);\n var mCont = _this.getContent().querySelector('.' + literals.movableContent);\n var frCont = _this.getContent().querySelector('.e-frozen-right-content');\n if (mCont && mCont.querySelectorAll('.e-templatecell').length) {\n _this.refreshReactTemplateTD(_this.getMovableDataRows(), isChildGrid, true);\n }\n if (frCont && frCont.querySelectorAll('.e-templatecell').length) {\n _this.refreshReactTemplateTD(_this.getFrozenRightDataRows(), isChildGrid, true);\n }\n if (renderTemplates) {\n _this.renderTemplates();\n }\n });\n }\n };\n /**\n * @param {Element[] | NodeListOf} rows - Defines the rows\n * @param {boolean} isChildGrid - Defines whether it is a Hierarchy Grid.\n * @param {boolean} isFrozen - Defines whether it is a Frozen Grid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactTemplateTD = function (rows, isChildGrid, isFrozen) {\n var cells = 'cells';\n var rowIdx = 'index';\n var indent = this.getIndentCount();\n var childIndent = 0;\n var isChildRow = false;\n for (var j = 0; j < rows.length; j++) {\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid')) {\n var gridObj = parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n childIndent = gridObj.getIndentCount();\n isChildRow = true;\n }\n if (rowsObj && rowsObj.isDataRow && !isNullOrUndefined(rowsObj.index) &&\n !rows[parseInt(j.toString(), 10)].classList.contains('e-editedrow')) {\n for (var i = 0; i < rowsObj[\"\" + cells].length; i++) {\n var cell = rowsObj[\"\" + cells][parseInt(i.toString(), 10)];\n if (cell.isTemplate) {\n var cellRenderer = new CellRenderer(this, this.serviceLocator);\n var td = isChildGrid ? rows[parseInt(j.toString(), 10)]\n .children[cell.index + (isChildRow ? childIndent : indent)] : this.getCellFromIndex(j, isFrozen ? cell.index : i - indent);\n cellRenderer.refreshTD(td, cell, rowsObj.data, { index: rowsObj[\"\" + rowIdx] });\n }\n }\n }\n isChildRow = false;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshGroupCaptionFooterTemplate = function () {\n var isChildGrid = this.childGrid && this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = this.getContentTable().querySelectorAll('.e-groupcaptionrow, .e-groupfooterrow');\n for (var i = 0; i < rows.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var gridObj = this;\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid')) {\n gridObj = parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n }\n if (rowsObj) {\n var cells = rowsObj.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: rowsObj.data, dataUid: rowsObj.uid };\n gridObj.notify(events.refreshAggregateCell, args);\n }\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactHeaderTemplateByUid = function (columnUid) {\n if (this.isReact) {\n var cells = 'cells';\n var rowsObj = this.headerModule.rows;\n var cellIndex = this.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rowsObj.length; j++) {\n var cell = rowsObj[parseInt(j.toString(), 10)][\"\" + cells][parseInt(cellIndex.toString(), 10)];\n if (cell && cell.column.uid === columnUid) {\n var headerCellRenderer = new HeaderCellRenderer(this, this.serviceLocator);\n var td = parentsUntil(this.element.querySelectorAll('[e-mappinguid=' + columnUid + ']')[0], 'e-templatecell');\n headerCellRenderer.refresh(cell, td);\n }\n }\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n *\n * @returns {void}\n */\n Grid.prototype.setRowData = function (key, rowData) {\n var rowuID = 'uid';\n var rowObjects = this.contentModule.getRows();\n var pkName = this.getPrimaryKeyFieldNames()[0];\n if (this.groupSettings.columns.length > 0 && this.aggregates.length > 0) {\n rowObjects = rowObjects.filter(function (row) { return row.isDataRow; });\n }\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var selectRowEle = selectedRow ? [].slice.call(this.element.querySelectorAll('[data-uid=' + selectedRow[\"\" + rowuID] + ']')) : undefined;\n if (!isNullOrUndefined(selectedRow) && selectRowEle.length) {\n selectedRow.changes = rowData;\n if (this.isFrozenGrid()) {\n var currentTbl = parentsUntil(selectRowEle[0], 'e-table');\n var currentTblName = currentTbl.parentElement.matches('.e-frozen-left-header,.e-frozen-left-content') ? 'left'\n : currentTbl.parentElement.matches('.e-frozen-right-header,.e-frozen-right-content') ? 'right' : 'movable';\n var mTr = this.getMovableRowsObject()[selectedRow.index];\n this.setFrozenRowData(mTr, rowData);\n if (currentTblName === 'left') {\n var lTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(lTr, rowData);\n }\n if (currentTblName === 'right' || this.frozenRightColumns.length > 0) {\n var rTr = this.getFrozenRightRowsObject()[selectedRow.index];\n this.setFrozenRowData(rTr, rowData);\n }\n }\n else if (this.frozenRows) {\n var fRowTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(fRowTr, rowData);\n }\n else {\n this.setFrozenRowData(selectedRow, rowData);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n }\n else {\n return;\n }\n };\n Grid.prototype.setFrozenRowData = function (fTr, rowData) {\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this);\n fTr.changes = rowData;\n refreshForeignData(fTr, this.getForeignKeyColumns(), fTr.changes);\n rowRenderer.refresh(fTr, this.getColumns(), true);\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n var col = this.getColumnByIndex(columnIndex);\n return getCellByColAndRowIndex(this, col, rowIndex, columnIndex);\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n if (this.frozenName === 'Left-Right' && columnIndex >= this.movableCount) {\n return undefined;\n }\n var index = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableDataRows()[parseInt(rowIndex.toString(), 10)] &&\n this.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell)[columnIndex - index];\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n var index = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n var rows = this.getFrozenRightDataRows();\n return rows[parseInt(rowIndex.toString(), 10)] && rows[parseInt(rowIndex.toString(), 10)]\n .getElementsByClassName(literals.rowCell)[columnIndex - index];\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getColumnHeaderByIndex = function (index) {\n return this.getHeaderTable().getElementsByClassName('e-headercell')[parseInt(index.toString(), 10)];\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getMovableColumnHeaderByIndex = function (index) {\n var left = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableVirtualHeader().getElementsByClassName('e-headercell')[index - left];\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n var left = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n return this.getFrozenRightHeader().getElementsByClassName('e-headercell')[index - left];\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getFrozenVirtualHeader().getElementsByClassName('e-headercell')[parseInt(index.toString(), 10)];\n };\n /**\n * @param {string} uid - Defines the uid\n * @param {boolean} isMovable - Defines isMovable\n * @param {boolean} isFrozenRight - Defines isFrozenRight\n * @returns {Row} Returns the row object\n * @hidden\n */\n Grid.prototype.getRowObjectFromUID = function (uid, isMovable, isFrozenRight) {\n var rows = this.contentModule.getRows();\n var row = this.rowObject(rows, uid);\n if (this.isFrozenGrid()) {\n if (!row || isMovable || isFrozenRight) {\n row = this.rowObject(this.contentModule.getMovableRows(), uid);\n if ((!row && this.getFrozenMode() === 'Left-Right') || isFrozenRight) {\n row = this.rowObject(this.contentModule.getFrozenRightRows(), uid);\n }\n return row;\n }\n }\n if (isNullOrUndefined(row) && this.enableVirtualization && this.groupSettings.columns.length > 0) {\n row = this.rowObject(this.vRows, uid);\n return row;\n }\n return row;\n };\n Grid.prototype.rowObject = function (rows, uid) {\n if (rows) {\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.uid === uid) {\n return row;\n }\n }\n }\n return null;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getMovableRowsObject = function () {\n var rows = [];\n if (this.isFrozenGrid()) {\n rows = this.contentModule.getMovableRows();\n }\n return rows;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getFrozenRightRowsObject = function () {\n var rows = [];\n if (this.getFrozenMode() === 'Right' || this.getFrozenMode() === 'Left-Right') {\n rows = this.contentModule.getFrozenRightRows();\n }\n return rows;\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByField = function (field) {\n var column = this.getColumnByField(field);\n return column ? this.getColumnHeaderByUid(column.uid) : undefined;\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByUid = function (uid) {\n var element = this.getHeaderContent().querySelector('[e-mappinguid=' + uid + ']');\n return element ? element.parentElement : undefined;\n };\n /**\n * @hidden\n * @param {number} index - Defines the index\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByIndex = function (index) {\n var column;\n this.getColumns().some(function (col, i) {\n column = col;\n return i === index;\n });\n return column;\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {number} Returns the index by field\n */\n Grid.prototype.getColumnIndexByField = function (field) {\n var cols = this.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByUid = function (uid) {\n return iterateArrayOrObject(this.getColumns().concat(this.getStackedColumns(this.columns)), function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * @param {Column[]} columns - Defines the columns\n * @param {Column[]} stackedColumn - Defines the stacked columns\n * @returns {Column[]} Returns the columns\n * @hidden\n */\n Grid.prototype.getStackedColumns = function (columns, stackedColumn) {\n if (stackedColumn === void 0) { stackedColumn = []; }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (column.columns) {\n stackedColumn.push(column);\n this.getStackedColumns(column.columns, stackedColumn);\n }\n }\n return stackedColumn;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {number} Returns the column by index\n */\n Grid.prototype.getColumnIndexByUid = function (uid) {\n var index = iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {string} Returns the column by field\n */\n Grid.prototype.getUidByColumnField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item.uid;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets column index by column uid value.\n *\n * @private\n * @param {string} uid - Specifies the column uid.\n * @returns {number} Returns the column by field\n */\n Grid.prototype.getNormalizedColumnIndex = function (uid) {\n var index = this.getColumnIndexByUid(uid);\n return index + this.getIndentCount();\n };\n /**\n * Gets indent cell count.\n *\n * @private\n * @returns {number} Returns the indent count\n */\n Grid.prototype.getIndentCount = function () {\n var index = 0;\n if (this.allowGrouping) {\n index += this.groupSettings.columns.length;\n }\n if (this.isDetail()) {\n index++;\n }\n if (this.isRowDragable() && isNullOrUndefined(this.rowDropSettings.targetID)) {\n index++;\n }\n /**\n * TODO: index normalization based on the stacked header, grouping and detailTemplate\n * and frozen should be handled here\n */\n return index;\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} Returns the Field names\n */\n Grid.prototype.getColumnFieldNames = function () {\n var columnNames = [];\n var column;\n for (var i = 0, len = this.getColumns().length; i < len; i++) {\n column = this.getColumns()[parseInt(i.toString(), 10)];\n if (column.visible) {\n columnNames.push(column.field);\n }\n }\n return columnNames;\n };\n /**\n * Gets a compiled row template.\n *\n * @returns {Function} Returns the row TEmplate\n * @private\n */\n Grid.prototype.getRowTemplate = function () {\n return this.rowTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function} Returns the Detail template\n */\n Grid.prototype.getDetailTemplate = function () {\n return this.detailTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function}Returns the Edit template\n */\n Grid.prototype.getEditTemplate = function () {\n return this.editTemplateFn;\n };\n /**\n * Gets a compiled dialog edit header template.\n *\n * @private\n * @returns {Function} returns template function\n */\n Grid.prototype.getEditHeaderTemplate = function () {\n return this.editHeaderTemplateFn;\n };\n /**\n * Gets a compiled dialog edit footer template.\n *\n * @private\n * @returns {Function} Returns the Footer template\n */\n Grid.prototype.getEditFooterTemplate = function () {\n return this.editFooterTemplateFn;\n };\n /**\n * Get the names of the primary key columns of the Grid.\n *\n * @returns {string[]} Returns the field names\n */\n Grid.prototype.getPrimaryKeyFieldNames = function () {\n var keys = [];\n for (var k = 0; k < this.columnModel.length; k++) {\n if (this.columnModel[parseInt(k.toString(), 10)].isPrimaryKey) {\n keys.push(this.columnModel[parseInt(k.toString(), 10)].field);\n }\n }\n return keys;\n };\n /**\n * Refreshes the Grid header and content.\n *\n * @returns {void}\n */\n Grid.prototype.refresh = function () {\n if (!this.isDestroyed) {\n this.isManualRefresh = true;\n this.headerModule.refreshUI();\n this.updateStackedFilter();\n this.renderModule.refresh();\n }\n };\n /**\n * Refreshes the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.refreshHeader = function () {\n this.headerModule.refreshUI();\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getSelectedRows = function () {\n return this.selectionModule ? this.selectionModule.selectedRecords : [];\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} Returns the Selected row indexes\n */\n Grid.prototype.getSelectedRowIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowIndexes : [];\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {number[]} Returns the Selected row cell indexes\n */\n Grid.prototype.getSelectedRowCellIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowCellIndexes : [];\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} Returns the selected records\n * @isGenericType true\n */\n Grid.prototype.getSelectedRecords = function () {\n return this.selectionModule ? this.selectionModule.getSelectedRecords() : [];\n };\n /**\n * Gets the collection of selected columns uid.\n *\n * @returns {string[]} Returns the selected column uid\n * @isGenericType true\n */\n Grid.prototype.getSelectedColumnsUid = function () {\n var _this = this;\n var uid = [];\n if (this.selectionModule) {\n this.selectionModule.selectedColumnsIndexes.filter(function (i) { return uid.push(_this.getColumns()[parseInt(i.toString(), 10)].uid); });\n }\n return uid;\n };\n /**\n * Gets the data module.\n *\n * @returns {Data} Returns the data\n */\n Grid.prototype.getDataModule = function () {\n return this.renderModule.data;\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.showColumns = function (keys, showBy) {\n showBy = showBy ? showBy : 'headerText';\n this.showHider.show(keys, showBy);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.hideColumns = function (keys, hideBy) {\n hideBy = hideBy ? hideBy : 'headerText';\n this.showHider.hide(keys, hideBy);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen column\n */\n Grid.prototype.getFrozenColumns = function () {\n return this.frozenColumns + this.getFrozenCount(this.columns, 0, 0);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n Grid.prototype.getFrozenRightColumnsCount = function () {\n return this.frozenRightCount;\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n Grid.prototype.getFrozenLeftColumnsCount = function () {\n return this.frozenLeftCount;\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n Grid.prototype.getMovableColumnsCount = function () {\n return this.movableCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setFrozenCount = function () {\n this.frozenLeftCount = this.frozenRightCount = this.movableCount = 0;\n this.visibleFrozenLeft = this.visibleFrozenRight = this.visibleMovable = 0;\n this.frozenLeftColumns = [];\n this.frozenRightColumns = [];\n this.movableColumns = [];\n this.splitFrozenCount(this.columns);\n if (this.frozenColumns && (this.frozenLeftCount || this.frozenRightCount)) {\n this.setProperties({ frozenColumns: 0 }, true);\n }\n this.setTablesCount();\n if (this.frozenLeftCount && !this.frozenRightCount) {\n this.frozenName = 'Left';\n }\n else if (this.frozenRightCount && !this.frozenLeftCount) {\n this.frozenName = 'Right';\n }\n else if (this.frozenLeftCount && this.frozenRightCount) {\n this.frozenName = 'Left-Right';\n }\n else if (this.frozenColumns || this.frozenRows) {\n this.frozenName = 'Left';\n }\n else {\n this.frozenName = undefined;\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n Grid.prototype.getVisibleFrozenLeftCount = function () {\n return this.visibleFrozenLeft;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n Grid.prototype.getVisibleFrozenRightCount = function () {\n return this.visibleFrozenRight;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n Grid.prototype.getVisibleMovableCount = function () {\n return this.visibleMovable;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenRightColumns = function () {\n return this.frozenRightColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenLeftColumns = function () {\n return this.frozenLeftColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getMovableColumns = function () {\n return this.movableColumns;\n };\n Grid.prototype.splitFrozenCount = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.splitFrozenCount(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenRightCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Left') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenLeftCount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n }\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible frozen columns count\n */\n Grid.prototype.getVisibleFrozenColumns = function () {\n return this.getVisibleFrozenColumnsCount() + this.getVisibleFrozenCount(this.columns, 0);\n };\n /**\n * Get the current Filter operator and field.\n *\n * @returns {FilterUI} Returns the filter UI\n */\n Grid.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n Grid.prototype.getVisibleFrozenColumnsCount = function () {\n var visibleFrozenColumns = 0;\n var columns = this.columnModel;\n for (var i = 0; i < this.frozenColumns; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n visibleFrozenColumns++;\n }\n }\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible && (columns[parseInt(i.toString(), 10)].freeze === 'Left'\n || columns[parseInt(i.toString(), 10)].freeze === 'Right')) {\n visibleFrozenColumns++;\n }\n }\n }\n return visibleFrozenColumns;\n };\n Grid.prototype.getVisibleFrozenCount = function (cols, cnt) {\n if (!this.frozenLeftCount && !this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getVisibleFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && cols[parseInt(i.toString(), 10)].visible) {\n cnt++;\n }\n }\n }\n }\n return cnt;\n };\n Grid.prototype.getFrozenCount = function (cols, cnt, index) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt, index);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && index > this.frozenColumns - 1) {\n cnt++;\n }\n index++;\n }\n }\n return cnt;\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n *\n * @returns {void}\n */\n Grid.prototype.goToPage = function (pageNo) {\n if (this.pagerModule) {\n this.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n *\n * @returns {void}\n */\n Grid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule) {\n this.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n *\n * @returns {void}\n */\n Grid.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Remove the existing columns along with the grid actions like sorting, filtering, searching, grouping, aggregate, etc., and grid will refresh with new columns based on the updated new data source.\n * > * If no columns are specified while changing the data source, then the columns are auto generated in the Grid based on the list of columns in the updated data source.\n *\n * @param {Object | DataManager | DataResult} dataSource - Assign the new datasource.\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines columns.\n * @returns {void}\n *\n *\n * ```typescript\n * \n *
    \n * \n * ```\n *\n */\n Grid.prototype.changeDataSource = function (dataSource, columns) {\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, true);\n }\n if (columns && columns.length) {\n this.setProperties({ columns: columns }, true);\n }\n if (dataSource) {\n if (isNullOrUndefined(columns)) {\n this.setProperties({ columns: [] }, true);\n }\n this.setProperties({ dataSource: dataSource }, true);\n }\n this.freezeRefresh();\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.clearGridActions = function () {\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, false);\n }\n else {\n this.freezeRefresh();\n }\n };\n /**\n * Filters grid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the grid filters the records with exact match. if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n *\n * @returns {void}\n */\n Grid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n if (this.filterModule) {\n this.filterModule.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n }\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - Defines the Fields\n * @returns {void}\n */\n Grid.prototype.clearFiltering = function (fields) {\n if (this.filterModule) {\n this.filterModule.clearFiltering(fields);\n }\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n if (this.filterModule) {\n this.filterModule.removeFilteredColsByField(field, isClearFilterBar);\n }\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectRow = function (index, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectRow(index, isToggle);\n }\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectRows = function (rowIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectRows(rowIndexes);\n }\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearSelection();\n }\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectCell = function (cellIndex, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectCell(cellIndex, isToggle);\n }\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n *\n * @returns {void}\n */\n Grid.prototype.selectCellsByRange = function (startIndex, endIndex) {\n this.selectionModule.selectCellsByRange(startIndex, endIndex);\n };\n /**\n * Searches Grid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n *\n * @returns {void}\n */\n Grid.prototype.search = function (searchString) {\n if (this.searchModule) {\n this.searchModule.search(searchString);\n }\n };\n /**\n * By default, prints all the pages of the Grid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n Grid.prototype.print = function () {\n if (this.printModule) {\n this.printModule.print();\n }\n };\n /**\n * Delete a record with Given options. If fieldname and data is not given then grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n Grid.prototype.deleteRecord = function (fieldname, data) {\n if (this.editModule) {\n this.editModule.deleteRecord(fieldname, data);\n }\n };\n /**\n * Starts edit the selected row. At least one row must be selected before invoking this method.\n * `editSettings.allowEditing` should be true.\n * {% codeBlock src='grid/startEdit/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n Grid.prototype.startEdit = function () {\n if (this.editModule) {\n this.editModule.startEdit();\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Grid.prototype.endEdit = function () {\n if (this.editModule) {\n this.editModule.endEdit();\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Grid.prototype.closeEdit = function () {\n if (this.editModule) {\n this.editModule.closeEdit();\n }\n };\n /**\n * Adds a new record to the Grid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Grid.prototype.addRecord = function (data, index) {\n if (this.editModule) {\n this.editModule.addRecord(data, index);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Grid.prototype.deleteRow = function (tr) {\n if (this.editModule) {\n this.editModule.deleteRow(tr);\n }\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n *\n * @returns {void}\n */\n Grid.prototype.editCell = function (index, field) {\n if (this.editModule) {\n this.editModule.editCell(index, field);\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n * {% codeBlock src='grid/saveCell/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.saveCell = function () {\n if (this.editModule) {\n this.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n *\n * @returns {void}\n */\n Grid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.editModule) {\n this.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * {% codeBlock src='grid/updateRow/index.md' %}{% endcodeBlock %}\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n *\n * @returns {void}\n */\n Grid.prototype.updateRow = function (index, data) {\n if (this.editModule) {\n this.editModule.updateRow(index, data);\n }\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} Returns the batch changes\n */\n Grid.prototype.getBatchChanges = function () {\n if (this.editModule) {\n return this.editModule.getBatchChanges();\n }\n return {};\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n *\n * @returns {void}\n */\n Grid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.toolbarModule) {\n this.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n Grid.prototype.copy = function (withHeader) {\n if (this.clipboardModule) {\n this.clipboardModule.copy(withHeader);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.recalcIndentWidth = function () {\n var _this = this;\n if (!this.getHeaderTable().querySelector('.e-emptycell')) {\n return;\n }\n if ((!this.groupSettings.columns.length && !this.isDetail() && !this.isRowDragable()) ||\n this.getHeaderTable().querySelector('.e-emptycell').getAttribute('indentRefreshed') ||\n !this.getContentTable()) {\n return;\n }\n var indentWidth = this.getHeaderTable().querySelector('.e-emptycell').parentElement.offsetWidth;\n var headerCol = [].slice.call(this.getHeaderTable().querySelector(literals.colGroup).childNodes);\n var contentCol = [].slice.call(this.getContentTable().querySelector(literals.colGroup).childNodes);\n var perPixel = indentWidth / 30;\n var i = this.getFrozenMode() === 'Right' ? this.frozenRightCount : 0;\n var parentOffset = this.element.offsetWidth;\n var applyWidth = function (index, width) {\n if (ispercentageWidth(_this)) {\n var newWidth = (width / parentOffset * 100).toFixed(1) + '%';\n headerCol[parseInt(index.toString(), 10)].style.width = newWidth;\n contentCol[parseInt(index.toString(), 10)].style.width = newWidth;\n }\n else {\n headerCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n contentCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n }\n _this.notify(events.columnWidthChanged, { index: index, width: width });\n };\n if (perPixel >= 1) {\n indentWidth = (30 / perPixel);\n }\n if (indentWidth < 1) {\n indentWidth = 1;\n }\n if (this.enableColumnVirtualization || this.isAutoGen || (this.columns.length === this.groupSettings.columns.length)) {\n indentWidth = 30;\n }\n while (i < this.groupSettings.columns.length) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isDetail()) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isRowDragable()) {\n applyWidth(i, indentWidth);\n }\n this.isAutoGen = false;\n this.getHeaderTable().querySelector('.e-emptycell').setAttribute('indentRefreshed', 'true');\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.resetIndentWidth = function () {\n if (ispercentageWidth(this)) {\n this.getHeaderTable().querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.widthService.setWidthToColumns();\n this.recalcIndentWidth();\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n }\n if ((this.width === 'auto' || typeof (this.width) === 'string' && this.width.indexOf('%') !== -1)\n && this.getColumns().filter(function (col) { return (!col.width || col.width === 'auto') && col.minWidth; }).length > 0) {\n var tgridWidth = this.widthService.getTableWidth(this.getColumns());\n this.widthService.setMinwidthBycalculation(tgridWidth);\n }\n if (this.isFrozenGrid() && this.widthService) {\n this.widthService.refreshFrozenScrollbar();\n }\n if (this.allowTextWrap && this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns isRowDragable\n */\n Grid.prototype.isRowDragable = function () {\n return this.allowRowDragAndDrop && !this.rowDropSettings.targetID;\n };\n /**\n * Changes the Grid column positions by field names.\n *\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumns = function (fromFName, toFName) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumns(fromFName, toFName);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByIndex multiple times,\n * then you won't get the same results every time.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByIndex(fromIndex, toIndex);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByTargetIndex multiple times,\n * then you will get the same results every time.\n *\n * @param {string} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByTargetIndex(fieldName, toIndex);\n }\n };\n /**\n * Changes the Grid Row position with given indexes.\n *\n * @param {number} fromIndexes - Defines the origin Indexes.\n * @param {number} toIndex - Defines the destination Index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderRows = function (fromIndexes, toIndex) {\n if (this.rowDragAndDropModule) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex);\n }\n };\n /**\n * @param {ReturnType} e - Defines the Return type\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshDataSource = function (e) {\n this.notify('refreshdataSource', e);\n };\n /**\n * @param {boolean} enable -Defines the enable\n * @returns {void}\n * @hidden\n */\n Grid.prototype.disableRowDD = function (enable) {\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerRows = headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell');\n var rows = this.getRows();\n var disValue = enable ? 'none' : '';\n setStyleAttribute(headerTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n setStyleAttribute(contentTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n for (var i = 0; i < this.getRows().length; i++) {\n var ele = rows[parseInt(i.toString(), 10)].firstElementChild;\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n for (var j = 0; j < headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell').length; j++) {\n var ele = headerRows[parseInt(j.toString(), 10)];\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @returns {void}\n *\n *\n * ```typescript\n *
    \n * \n * ```\n *\n */\n Grid.prototype.autoFitColumns = function (fieldNames) {\n if (this.resizeModule) {\n this.resizeModule.autoFitColumns(fieldNames);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.preventAdjustColumns = function () {\n if (this.isFrozenGrid() || (this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var columns = this.getColumns();\n var headerTable = this.getHeaderTable();\n var tableWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n if (this.groupSettings.columns.length\n && this.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) > -1) {\n var headerCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll(':not(.e-group-intent):not(.e-detail-intent):not(.e-drag-intent)'));\n if (headerCol[parseInt(i.toString(), 10)].style.display === 'none') {\n continue;\n }\n }\n if (columns[parseInt(i.toString(), 10)].width) {\n tableWidth += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n else {\n tableWidth = 0;\n break;\n }\n }\n }\n if (tableWidth) {\n var percentageWidth = this.isPercentageWidthGrid();\n var unit = this.widthUnit(percentageWidth);\n var contentTable = this.getContentTable();\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var indentWidth = this.defaultIndentWidth(percentageWidth);\n var indentWidthUnitFormat = indentWidth.toString() + unit;\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n var contentIndentCol = [].slice.call(contentTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n for (var i = 0; i < headerIndentCol.length; i++) {\n headerIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n contentIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n tableWidth += indentWidth;\n }\n }\n if ((percentageWidth && tableWidth < 100)\n || (!percentageWidth && tableWidth < contentTable.parentElement.clientWidth)) {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n var tableWidthUnitFormat = tableWidth.toString() + unit;\n headerTable.style.setProperty('width', tableWidthUnitFormat);\n contentTable.style.setProperty('width', tableWidthUnitFormat);\n }\n else {\n this.restoreAdjustColumns();\n }\n };\n Grid.prototype.restoreAdjustColumns = function () {\n if (this.isFrozenGrid() || (this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n removeClass([headerTable, contentTable], ['e-tableborder']);\n headerTable.style.removeProperty('width');\n contentTable.style.removeProperty('width');\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var percentageWidth = this.isPercentageWidthGrid();\n var indentWidthUnitFormat_1 = this.defaultIndentWidth(percentageWidth).toString() + this.widthUnit(percentageWidth);\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n headerIndentCol.forEach(function (element) {\n element.style.setProperty('width', indentWidthUnitFormat_1);\n });\n headerTable.querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.recalcIndentWidth();\n }\n };\n Grid.prototype.widthUnit = function (percentageWidth) {\n return percentageWidth ? '%' : 'px';\n };\n Grid.prototype.defaultIndentWidth = function (percentageWidth) {\n return percentageWidth ? parseFloat((30 / this.element.offsetWidth * 100).toFixed(1)) : 30;\n };\n Grid.prototype.isPercentageWidthGrid = function () {\n return this.getColumns()[0].width.toString().indexOf('%') > -1;\n };\n /**\n * @param {number} x - Defines the number\n * @param {number} y - Defines the number\n * @param {Element} target - Defines the Element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createColumnchooser = function (x, y, target) {\n if (this.columnChooserModule) {\n this.columnChooserModule.renderColumnChooser(x, y, target);\n }\n };\n Grid.prototype.initializeServices = function () {\n this.serviceLocator.register('widthService', this.widthService = new ColumnWidthService(this));\n this.serviceLocator.register('cellRendererFactory', new CellRendererFactory);\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('localization', this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale));\n this.serviceLocator.register('valueFormatter', this.valueFormatterService = new ValueFormatter(this.locale));\n this.serviceLocator.register('showHideService', this.showHider = new ShowHide(this));\n this.serviceLocator.register('ariaService', this.ariaService = new AriaService());\n this.serviceLocator.register('focus', this.focusModule = new FocusStrategy(this));\n };\n Grid.prototype.processModel = function () {\n var gCols = this.groupSettings.columns;\n var sCols = this.sortSettings.columns;\n var flag;\n var j;\n if (this.allowGrouping) {\n var _loop_1 = function (i, len) {\n j = 0;\n for (var sLen = sCols.length; j < sLen; j++) {\n if (sCols[parseInt(j.toString(), 10)].field === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n break;\n }\n }\n if (!flag) {\n sCols.push({ field: gCols[parseInt(i.toString(), 10)], direction: 'Ascending', isFromGroup: true });\n }\n else {\n if (this_1.allowSorting) {\n this_1.sortedColumns.push(sCols[parseInt(j.toString(), 10)].field);\n }\n else {\n sCols[parseInt(j.toString(), 10)].direction = 'Ascending';\n }\n }\n if (!this_1.groupSettings.showGroupedColumn) {\n var column = this_1.enableColumnVirtualization ?\n this_1.columns.filter(function (c) { return c.field === gCols[parseInt(i.toString(), 10)]; })[0]\n : this_1.getColumnByField(gCols[parseInt(i.toString(), 10)]);\n if (column) {\n column.visible = false;\n }\n else {\n this_1.log('initial_action', { moduleName: 'group', columnName: gCols[parseInt(i.toString(), 10)] });\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = gCols.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n if (!gCols.length) {\n for (var i = 0; i < sCols.length; i++) {\n this.sortedColumns.push(sCols[parseInt(i.toString(), 10)].field);\n }\n }\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n this.editTemplateFn = templateCompiler(this.editSettings.template);\n this.editHeaderTemplateFn = templateCompiler(this.editSettings.headerTemplate);\n this.editFooterTemplateFn = templateCompiler(this.editSettings.footerTemplate);\n if (!isNullOrUndefined(this.parentDetails)) {\n var value = isNullOrUndefined(this.parentDetails.parentKeyFieldValue) ? 'undefined' :\n this.parentDetails.parentKeyFieldValue;\n this.query.where(this.queryString, 'equal', value, true);\n }\n this.initForeignColumn();\n };\n Grid.prototype.initForeignColumn = function () {\n if (this.isForeignKeyEnabled(this.getColumns())) {\n this.notify(events.initForeignKeyColumn, this.getForeignKeyColumns());\n }\n };\n Grid.prototype.enableVerticalRendering = function () {\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n else {\n this.element.classList.remove('e-row-responsive');\n }\n };\n Grid.prototype.gridRender = function () {\n var _a;\n this.updateRTL();\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n if (this.enableHover) {\n this.element.classList.add('e-gridhover');\n }\n if (Browser.isDevice) {\n this.element.classList.add('e-device');\n }\n if (this.rowHeight) {\n this.element.classList.add('e-grid-min-height');\n }\n if (this.cssClass) {\n if (this.cssClass.indexOf(' ') !== -1) {\n (_a = this.element.classList).add.apply(_a, this.cssClass.split(' '));\n }\n else {\n this.element.classList.add(this.cssClass);\n }\n }\n // If the below if statement is removed, then drag and drop between grids will not work in firefox browser.\n if (this.allowRowDragAndDrop && this.rowDropSettings.targetID && Browser.info.name === 'mozilla') {\n this.element.classList.add('e-disableuserselect');\n }\n classList(this.element, ['e-responsive', 'e-default'], []);\n var rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.headerModule = rendererFactory.getRenderer(RenderType.Header);\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.printModule = new Print(this, this.scrollModule);\n this.clipboardModule = new Clipboard(this, this.serviceLocator);\n this.renderModule.render();\n this.eventInitializer();\n this.createGridPopUpElement();\n this.widthService.setWidthToColumns();\n this.updateGridLines();\n this.applyTextWrap();\n this.createTooltip(); //for clip mode ellipsis\n this.enableBoxSelection();\n };\n Grid.prototype.dataReady = function () {\n this.scrollModule.setWidth();\n this.scrollModule.setHeight();\n if (this.height !== 'auto') {\n this.scrollModule.setPadding();\n }\n };\n Grid.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Grid.prototype.createGridPopUpElement = function () {\n var popup = this.createElement('div', { className: 'e-gridpopup', styles: 'display:none;' });\n var content = this.createElement('div', { className: literals.content, attrs: { tabIndex: '-1' } });\n append([content, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content.appendChild(this.createElement('span'));\n append([content, this.createElement('div', { className: 'e-downtail e-tail' })], popup);\n this.element.appendChild(popup);\n };\n Grid.prototype.updateGridLines = function () {\n classList(this.element, [], ['e-verticallines', 'e-horizontallines', 'e-hidelines', 'e-bothlines']);\n switch (this.gridLines) {\n case 'Horizontal':\n this.element.classList.add('e-horizontallines');\n break;\n case 'Vertical':\n this.element.classList.add('e-verticallines');\n break;\n case 'None':\n this.element.classList.add('e-hidelines');\n break;\n case 'Both':\n this.element.classList.add('e-bothlines');\n break;\n }\n this.updateResizeLines();\n };\n Grid.prototype.updateResizeLines = function () {\n if (this.allowResizing &&\n !(this.gridLines === 'Vertical' || this.gridLines === 'Both')) {\n this.element.classList.add('e-resize-lines');\n }\n else {\n this.element.classList.remove('e-resize-lines');\n }\n };\n /**\n * The function is used to apply text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyTextWrap = function () {\n if (this.allowTextWrap) {\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n switch (this.textWrapSettings.wrapMode) {\n case 'Header':\n wrap(this.element, false);\n wrap(this.getContent(), false);\n wrap(headerRows, true);\n break;\n case 'Content':\n wrap(this.getContent(), true);\n wrap(this.element, false);\n wrap(headerRows, false);\n break;\n default:\n wrap(this.element, true);\n wrap(this.getContent(), false);\n wrap(headerRows, false);\n }\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n }\n };\n /**\n * The function is used to remove text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeTextWrap = function () {\n wrap(this.element, false);\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n wrap(headerRows, false);\n wrap(this.getContent(), false);\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * The function is used to add Tooltip to the grid cell that has ellipsiswithtooltip clip mode.\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createTooltip = function () {\n this.toolTipObj = new Tooltip({\n opensOn: 'custom',\n content: '',\n cssClass: this.cssClass ? this.cssClass : null\n }, this.element);\n };\n /** @hidden\n * @returns {void}\n */\n Grid.prototype.freezeRefresh = function () {\n this.isFreezeRefresh = true;\n if (this.enableVirtualization || this.enableInfiniteScrolling) {\n this.pageSettings.currentPage = 1;\n }\n this.componentRefresh();\n };\n Grid.prototype.getTooltipStatus = function (element) {\n var headerTable = this.getHeaderTable();\n var headerDivTag = 'e-gridheader';\n var htable = this.createTable(headerTable, headerDivTag, 'header');\n var ctable = this.createTable(headerTable, headerDivTag, 'content');\n var table = element.classList.contains('e-headercell') ? htable : ctable;\n var ele = element.classList.contains('e-headercell') ? 'th' : 'tr';\n table.querySelector(ele).className = element.className;\n table.querySelector(ele).innerHTML = element.innerHTML;\n var width = table.querySelector(ele).getBoundingClientRect().width;\n document.body.removeChild(htable);\n document.body.removeChild(ctable);\n if (width > element.getBoundingClientRect().width) {\n return true;\n }\n return false;\n };\n Grid.prototype.mouseMoveHandler = function (e) {\n if (this.isEllipsisTooltip()) {\n var element = parentsUntil(e.target, 'e-ellipsistooltip');\n if (this.prevElement !== element || e.type === 'mouseout') {\n this.toolTipObj.close();\n }\n var tagName = e.target.tagName;\n var elemNames = ['A', 'BUTTON', 'INPUT'];\n if (element && e.type !== 'mouseout' && !(Browser.isDevice && elemNames.indexOf(tagName) !== -1)) {\n if (element.getAttribute('data-tooltip-id')) {\n return;\n }\n if (this.getTooltipStatus(element)) {\n var col = this.getColumns()[parseInt(element.getAttribute(literals.dataColIndex), 10)];\n var domSetter = col.disableHtmlEncode ? 'innerText' : 'innerHTML';\n var contentDiv = this.createElement('div');\n if (element.getElementsByClassName('e-headertext').length) {\n var innerElement = element.getElementsByClassName('e-headertext')[0];\n contentDiv[\"\" + domSetter] = this.sanitize(innerElement.innerText);\n this.toolTipObj.content = contentDiv;\n }\n else {\n contentDiv[\"\" + domSetter] = this.sanitize(element.innerText);\n this.toolTipObj.content = contentDiv;\n }\n this.prevElement = element;\n if (this.enableHtmlSanitizer) {\n this.toolTipObj.enableHtmlSanitizer = true;\n }\n if (col.disableHtmlEncode) {\n this.toolTipObj.enableHtmlParse = false;\n }\n this.toolTipObj['open'](element);\n }\n }\n }\n this.hoverFrozenRows(e);\n };\n /**\n * @param {MouseEvent} e - Defines the mouse event\n * @returns {void}\n * @hidden\n */\n Grid.prototype.hoverFrozenRows = function (e) {\n if (this.isFrozenGrid()) {\n var row = parentsUntil(e.target, literals.row);\n if ([].slice.call(this.element.getElementsByClassName('e-frozenhover')).length && e.type === 'mouseout') {\n var rows = [].slice.call(this.element.getElementsByClassName('e-frozenhover'));\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].classList.remove('e-frozenhover');\n }\n }\n else if (row) {\n var rows = [].slice.call(this.element.querySelectorAll('tr[data-rowindex=\"' + row.getAttribute(literals.dataRowIndex) + '\"]'));\n rows.splice(rows.indexOf(row), 1);\n for (var i = 0; i < rows.length; i++) {\n if (row.getAttribute('aria-selected') !== 'true' && rows[parseInt(i.toString(), 10)]) {\n rows[parseInt(i.toString(), 10)].classList.add('e-frozenhover');\n }\n else if (rows[parseInt(i.toString(), 10)]) {\n rows[parseInt(i.toString(), 10)].classList.remove('e-frozenhover');\n }\n }\n }\n }\n };\n Grid.prototype.isEllipsisTooltip = function () {\n var cols = this.getColumns();\n if (this.clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n }\n return false;\n };\n Grid.prototype.scrollHandler = function () {\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n };\n /**\n * To create table for ellipsiswithtooltip\n *\n * @param {Element} table - Defines the table\n * @param {string} tag - Defines the tag\n * @param {string} type - Defines the type\n * @returns {HTMLDivElement} Returns the HTML div ELement\n * @hidden\n */\n Grid.prototype.createTable = function (table, tag, type) {\n var myTableDiv = this.createElement('div');\n myTableDiv.className = this.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.createElement('table', { attrs: { role: 'grid' } });\n myTable.className = table.className;\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var ele = (type === 'header') ? 'th' : 'td';\n var myTr = this.createElement('tr');\n var mytd = this.createElement(ele);\n myTr.appendChild(mytd);\n myTable.appendChild(myTr);\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n return myTableDiv;\n };\n Grid.prototype.onKeyPressed = function (e) {\n if (e.action === 'tab' || e.action === 'shiftTab') {\n this.toolTipObj.close();\n }\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'dblclick', this.dblClickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resetIndentWidth, this);\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.getContent().firstElementChild, 'scroll', this.scrollHandler, this);\n EventHandler.add(this.element, 'mousemove', this.mouseMoveHandler, this);\n EventHandler.add(this.element, 'mouseout', this.mouseMoveHandler, this);\n EventHandler.add(this.getContent(), 'touchstart', this.tapEvent, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.mouseClickHandler);\n EventHandler.remove(this.element, 'touchend', this.mouseClickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'dblclick', this.dblClickHandler);\n EventHandler.remove(this.getContent().firstElementChild, 'scroll', this.scrollHandler);\n EventHandler.remove(this.element, 'mousemove', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'mouseout', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(this.getContent(), 'touchstart', this.tapEvent);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resetIndentWidth);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.on(events.dataReady, this.dataReady, this);\n this.on(events.contentReady, this.recalcIndentWidth, this);\n this.on(events.headerRefreshed, this.recalcIndentWidth, this);\n this.dataBoundFunction = this.refreshMediaCol.bind(this);\n this.addEventListener(events.dataBound, this.dataBoundFunction);\n this.on(events.keyPressed, this.onKeyPressed, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.dataReady, this.dataReady);\n this.off(events.contentReady, this.recalcIndentWidth);\n this.off(events.headerRefreshed, this.recalcIndentWidth);\n this.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.off(events.keyPressed, this.onKeyPressed);\n };\n /**\n * Get current visible data of grid.\n *\n * @returns {Object[]} Returns the current view records\n *\n * @isGenericType true\n */\n Grid.prototype.getCurrentViewRecords = function () {\n if (isGroupAdaptive(this)) {\n return isNullOrUndefined(this.currentViewData.records) ?\n this.currentViewData : this.currentViewData.records;\n }\n if (this.groupSettings.enableLazyLoading) {\n return this.currentViewData;\n }\n return (this.allowGrouping && this.groupSettings.columns.length && this.currentViewData.length\n && this.currentViewData.records) ? this.currentViewData.records\n : this.currentViewData;\n };\n Grid.prototype.mouseClickHandler = function (e) {\n if (this.isChildGrid(e) || (parentsUntil(e.target, 'e-gridpopup') && e.touches) ||\n this.element.getElementsByClassName('e-cloneproperties').length || this.checkEdit(e)) {\n return;\n }\n if (((!this.allowRowDragAndDrop && (parentsUntil(e.target, literals.gridContent) ||\n e.target.tagName === 'TD')) || (!(this.allowGrouping || this.allowReordering) &&\n parentsUntil(e.target, 'e-gridheader'))) && e.touches) {\n return;\n }\n if (parentsUntil(e.target, 'e-gridheader') && this.allowRowDragAndDrop &&\n !(parentsUntil(e.target, 'e-filterbarcell')) && (e.target &&\n ['A', 'BUTTON', 'INPUT'].indexOf(e.target.tagName) === -1)) {\n e.preventDefault();\n }\n var args = this.getRowInfo(e.target);\n var cancel = 'cancel';\n args[\"\" + cancel] = false;\n var isDataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n isDataRow = rowObj ? rowObj.isDataRow : false;\n }\n if (isDataRow) {\n this.trigger(events.recordClick, args);\n }\n this.notify(events.click, e);\n };\n Grid.prototype.checkEdit = function (e) {\n var tr = parentsUntil(e.target, literals.row);\n var isEdit = this.editSettings.mode !== 'Batch' &&\n this.isEdit && tr && (tr.classList.contains(literals.editedRow) || tr.classList.contains(literals.addedRow));\n return !parentsUntil(e.target, 'e-unboundcelldiv') && (isEdit || (parentsUntil(e.target, literals.rowCell) &&\n parentsUntil(e.target, literals.rowCell).classList.contains('e-editedbatchcell')));\n };\n Grid.prototype.dblClickHandler = function (e) {\n var grid = parentsUntil(e.target, 'e-grid');\n if (isNullOrUndefined(grid) || grid.id !== this.element.id || closest(e.target, '.e-unboundcelldiv')) {\n return;\n }\n var dataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n dataRow = rowObj ? rowObj.isDataRow : false;\n }\n var args = this.getRowInfo(e.target);\n args.target = e.target;\n if (dataRow) {\n this.trigger(events.recordDoubleClick, args);\n }\n this.notify(events.dblclick, e);\n };\n Grid.prototype.focusOutHandler = function (e) {\n if (this.isChildGrid(e)) {\n return;\n }\n if (!parentsUntil(e.target, 'e-grid')) {\n this.element.querySelector('.e-gridpopup').style.display = 'None';\n }\n var filterClear = this.element.querySelector('.e-cancel:not(.e-hide)');\n if (filterClear && !filterClear.parentElement.classList.contains('e-tbar-btn')) {\n filterClear.classList.add('e-hide');\n }\n var relatedTarget = e.relatedTarget;\n var ariaOwns = relatedTarget ? relatedTarget.getAttribute('aria-owns') : null;\n if ((!relatedTarget || (!parentsUntil(relatedTarget, 'e-grid') &&\n (!isNullOrUndefined(ariaOwns) &&\n (ariaOwns)) !== e.target.getAttribute('aria-owns')))\n && !this.keyPress && this.isEdit && !Browser.isDevice) {\n if (this.editSettings.mode === 'Batch' && !((parentsUntil(relatedTarget, 'e-ddl') || parentsUntil(relatedTarget, 'e-ddt')) &&\n parentsUntil(relatedTarget, 'e-input-group')) && (parentsUntil(relatedTarget, 'e-uploader') || !isNullOrUndefined(parentsUntil(relatedTarget, 'e-input-group')))) {\n this.editModule.saveCell();\n this.notify(events.editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal') {\n this.editModule.editFormValidate();\n }\n }\n this.keyPress = false;\n };\n Grid.prototype.isChildGrid = function (e) {\n var gridElement = parentsUntil(e.target, 'e-grid');\n if ((gridElement && gridElement.id !== this.element.id) || (parentsUntil(e.target, 'e-unboundcelldiv') &&\n isNullOrUndefined(gridElement))) {\n return true;\n }\n return false;\n };\n /**\n * @param {Object} persistedData - Defines the persisted data\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mergePersistGridData = function (persistedData) {\n var data = this.getLocalData();\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n if (this.enableVirtualization && dataObj.pageSettings) {\n dataObj.pageSettings.currentPage = 1;\n }\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[\"\" + key] === 'object') && !isNullOrUndefined(this[\"\" + key])) {\n if (Array.isArray(this[\"\" + key]) && key === 'columns') {\n setColumnIndex(this[\"\" + key]);\n this.mergeColumns(dataObj[\"\" + key], this[\"\" + key]);\n this[\"\" + key] = dataObj[\"\" + key];\n }\n else {\n extend(this[\"\" + key], dataObj[\"\" + key]);\n }\n }\n else {\n this[\"\" + key] = dataObj[\"\" + key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n Grid.prototype.mergeColumns = function (storedColumn, columns) {\n var storedColumns = storedColumn;\n var _loop_2 = function (i) {\n var localCol = columns.filter(function (tCol) { return tCol.index === storedColumns[parseInt(i.toString(), 10)].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (localCol.columns && localCol.columns.length) {\n this_2.mergeColumns(storedColumns[parseInt(i.toString(), 10)].columns, localCol.columns);\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n else {\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_2(i);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns the isDetail\n */\n Grid.prototype.isDetail = function () {\n return !isNullOrUndefined(this.detailTemplate) || !isNullOrUndefined(this.childGrid);\n };\n Grid.prototype.isCommandColumn = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n Grid.prototype.isForeignKeyEnabled = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isForeignKeyEnabled(col.columns);\n }\n return !!(col.dataSource && col.foreignKeyValue);\n });\n };\n Grid.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.trigger('keyPressed', presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Grid.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) { //alt j\n if (this.keyA) { //alt A J\n this.notify(events.groupCollapse, { target: e.target, collapse: false });\n this.keyA = false;\n }\n else {\n if (this.focusModule && this.focusModule.currentInfo && this.focusModule.currentInfo.element) {\n removeClass([this.focusModule.currentInfo.element, this.focusModule.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.focusModule.currentInfo.element.tabIndex = -1;\n }\n if (!this.element.classList.contains('e-childgrid')) {\n this.element.focus();\n }\n }\n }\n if (e.keyCode === 87) { //alt w\n var focusModule = this.focusModule;\n if (focusModule) {\n if (!this.currentViewData.length) {\n return;\n }\n focusModule.focusContent();\n focusModule.addOutline();\n }\n }\n if (e.keyCode === 65) { //alt A\n this.keyA = true;\n }\n if (e.keyCode === 72 && this.keyA) { //alt A H\n this.notify(events.groupCollapse, { target: e.target, collapse: true });\n this.keyA = false;\n }\n }\n if (e.keyCode === 13) {\n this.notify(events.enterKeyHandler, e);\n }\n };\n Grid.prototype.keyActionHandler = function (e) {\n if (this.isChildGrid(e) ||\n (this.isEdit && e.action !== 'escape' && e.action !== 'enter' && e.action !== 'shiftEnter'\n && e.action !== 'tab' && e.action !== 'shiftTab')) {\n return;\n }\n else {\n this.keyPress = true;\n }\n if (this.allowKeyboard) {\n if (e.action === 'ctrlPlusP') {\n e.preventDefault();\n this.print();\n }\n this.notify(events.keyPressed, e);\n }\n };\n /**\n * @param {Function[]} modules - Defines the modules\n * @returns {void}\n * @hidden\n */\n Grid.prototype.setInjectedModules = function (modules) {\n this.injectedModules = modules;\n };\n Grid.prototype.updateColumnObject = function () {\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n setColumnIndex(this.columns);\n this.initForeignColumn();\n this.notify(events.autoCol, {});\n };\n /**\n * Gets the foreign columns from Grid.\n *\n * @returns {Column[]} Returns Foreign key column\n */\n Grid.prototype.getForeignKeyColumns = function () {\n return this.getColumns().filter(function (col) {\n return col.isForeignColumn();\n });\n };\n /**\n * @hidden\n * @returns {number} Returns row height\n */\n Grid.prototype.getRowHeight = function () {\n return this.rowHeight ? this.rowHeight : getRowHeight(this.element);\n };\n /**\n * Refreshes the Grid column changes.\n *\n * @returns {void}\n */\n Grid.prototype.refreshColumns = function () {\n this.setFrozenCount();\n var fCnt = this.getContent().querySelector('.e-frozen-left-content');\n var frCnt = this.getContent().querySelector('.e-frozen-right-content');\n var isColFrozen = !this.frozenRightCount && !this.frozenLeftCount;\n var isFrozen = this.getFrozenColumns() !== 0;\n if (!isFrozen && ((!fCnt && this.frozenLeftCount) || (!frCnt && this.frozenRightCount) || (fCnt && !this.frozenLeftCount)\n || (frCnt && !this.frozenRightCount))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else if (isColFrozen && ((this.getFrozenColumns() === 1 && !fCnt) || (this.getFrozenColumns() === 0 && fCnt))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else {\n this.isPreventScrollEvent = true;\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.isFrozenGrid()) {\n var mTbl = this.contentModule.getMovableContent().querySelector('.' + literals.table);\n remove(mTbl.querySelector(literals.colGroup));\n var colGroup = ((this.getHeaderContent()\n .querySelector('.' + literals.movableHeader).querySelector(literals.colGroup)).cloneNode(true));\n mTbl.insertBefore(colGroup, mTbl.querySelector(literals.tbody));\n if (this.getFrozenMode() === 'Left-Right') {\n var frTbl = this.contentModule.getFrozenRightContent().querySelector('.' + literals.table);\n remove(frTbl.querySelector(literals.colGroup));\n var colGrp = ((this.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector(literals.colGroup)).cloneNode(true));\n frTbl.insertBefore(colGrp, frTbl.querySelector(literals.tbody));\n }\n }\n }\n if (this.isFrozenGrid()) {\n var left = this.getContent().querySelector('.e-movablescrollbar').scrollLeft;\n this.headerModule.getMovableHeader().scrollLeft = left;\n this.contentModule.getMovableContent().scrollLeft = left;\n }\n };\n /**\n * Export Grid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns the excelexport\n */\n Grid.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n };\n /**\n * Export Grid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns csv export\n */\n Grid.prototype.csvExport = function (excelExportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob) : null;\n };\n /**\n * Export Grid data to PDF document.\n *\n * @param {pdfExportProperties} pdfExportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n *\n * @returns {Promise} Returns pdfexport\n */\n Grid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n *\n * @returns {void}\n */\n Grid.prototype.groupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.groupColumn(columnName);\n }\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupExpandAll = function () {\n if (this.groupModule) {\n this.groupModule.expandAll();\n }\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupCollapseAll = function () {\n if (this.groupModule) {\n this.groupModule.collapseAll();\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {void}\n */\n // public expandCollapseRows(target: Element): void {\n // if (this.groupModule) {\n // this.groupModule.expandCollapseRows(target);\n // }\n // }\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearGrouping = function () {\n if (this.groupModule) {\n this.groupModule.clearGrouping();\n }\n };\n /**\n * Ungroups a column by column name.\n *\n * {% codeBlock src='grid/ungroupColumn/index.md' %}{% endcodeBlock %}\n *\n * @param {string} columnName - Defines the column name to ungroup.\n *\n * @returns {void}\n */\n Grid.prototype.ungroupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.ungroupColumn(columnName);\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n *\n * @returns {void}\n */\n Grid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n Grid.prototype.scrollRefresh = function () {\n var _this = this;\n var refresh = function () {\n _this.scrollModule.refresh();\n _this.off(events.contentReady, refresh);\n };\n this.on(events.contentReady, refresh, this);\n };\n /**\n * Collapses a detail row with the given target.\n *\n * @param {Element} target - Defines the expanded element to collapse.\n * @returns {void}\n */\n // public detailCollapse(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.collapse(target);\n // }\n // }\n /**\n * Collapses all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailCollapseAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.collapseAll();\n }\n };\n /**\n * Expands a detail row with the given target.\n *\n * @param {Element} target - Defines the collapsed element to expand.\n * @returns {void}\n */\n // public detailExpand(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.expand(target);\n // }\n // }\n /**\n * Expands all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailExpandAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.expandAll();\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearCellSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearCellSelection();\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Grid.prototype.clearRowSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearRowSelection();\n }\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectCells = function (rowCellIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectCells(rowCellIndexes);\n }\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n *\n * @returns {void}\n */\n Grid.prototype.selectRowsByRange = function (startIndex, endIndex) {\n if (this.selectionModule) {\n this.selectionModule.selectRowsByRange(startIndex, endIndex);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns whether context menu is open or not\n */\n Grid.prototype.isContextMenuOpen = function () {\n return this.contextMenuModule && this.contextMenuModule.isOpen;\n };\n /**\n * @param {Function} module - Defines the module\n * @returns {boolean} return the injected modules\n * @hidden\n */\n Grid.prototype.ensureModuleInjected = function (module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - specifies the index\n *\n * @returns {void}\n */\n // eslint-disable-next-line\n Grid.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * @param {string | string[]} type - Defines the type\n * @param {Object} args - Defines the arguments\n * @returns {void}\n * @hidden\n * @private\n */\n Grid.prototype.log = function (type, args) {\n // eslint-disable-next-line\n this.loggerModule ? this.loggerModule.log(type, args) : (function () { return 0; })();\n };\n /**\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyBiggerTheme = function (element) {\n if (this.element.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n };\n /**\n * @hidden\n * @returns {Object} Returns the previous row data\n */\n Grid.prototype.getPreviousRowData = function () {\n var previousRowData = this.getRowsObject()[this.getRows().length - 1].data;\n return previousRowData;\n };\n /**\n * Hides the scrollbar placeholder of Grid content when grid content is not overflown.\n *\n * @returns {void}\n */\n Grid.prototype.hideScroll = function () {\n var content = this.getContent().querySelector('.' + literals.content);\n var scrollBar = this.getContent().querySelector('.e-scrollbar');\n if (content.scrollHeight <= content.clientHeight) {\n this.scrollModule.removePadding();\n content.style.overflowY = 'auto';\n }\n if (this.isFrozenGrid() && scrollBar) {\n var mvblScrollBar = this.getContent().querySelector('.e-movablescrollbar');\n var mvblChild = this.getContent().querySelector('.e-movablechild');\n scrollBar.style.display = 'flex';\n if (mvblScrollBar.offsetWidth >= mvblChild.offsetWidth) {\n scrollBar.style.display = 'none';\n this.notify(events.frozenHeight, 0);\n }\n }\n };\n /**\n * Get row index by primary key or row data.\n *\n * @param {string | Object} value - Defines the primary key value.\n *\n * @returns {number} Returns the index\n */\n Grid.prototype.getRowIndexByPrimaryKey = function (value) {\n var pkName = this.getPrimaryKeyFieldNames()[0];\n value = typeof value === 'object' ? value[\"\" + pkName] : value;\n var rows = this.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isDetailRow || rows[parseInt(i.toString(), 10)].isCaptionRow) {\n continue;\n }\n var pKvalue = rows[parseInt(i.toString(), 10)].data[\"\" + pkName];\n if (pkName.split('.').length > 1) {\n pKvalue = performComplexDataOperation(pkName, rows[parseInt(i.toString(), 10)].data);\n }\n if (pKvalue === value) {\n return rows[parseInt(i.toString(), 10)].index;\n }\n }\n return -1;\n };\n /**\n * @param {string} field - Defines the field name\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByFieldFromAllCols = function (field) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (field === gCols[parseInt(i.toString(), 10)].field || (gCols[parseInt(i.toString(), 10)].isForeignColumn() &&\n field === gCols[parseInt(i.toString(), 10)].foreignKeyValue)) {\n column = gCols[parseInt(i.toString(), 10)];\n }\n }\n return column;\n };\n /**\n * @param {string} uid - Defines the uid\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByUidFromAllCols = function (uid) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (uid === gCols[parseInt(i.toString(), 10)].uid) {\n column = gCols[parseInt(i.toString(), 10)];\n }\n }\n return column;\n };\n /**\n * Get all filtered records from the Grid and it returns array of objects for the local dataSource, returns a promise object if the Grid has remote data.\n *\n * @returns {Object[] | Promise} Returns the filtered records\n */\n Grid.prototype.getFilteredRecords = function () {\n if (this.allowFiltering && this.filterSettings.columns.length) {\n var query = this.renderModule.data.generateQuery(true);\n if (this.dataSource && this.renderModule.data.isRemote() && this.dataSource instanceof DataManager) {\n return this.renderModule.data.getData(this.dataSource, query);\n }\n else {\n if (this.dataSource instanceof DataManager) {\n return this.dataSource.executeLocal(query);\n }\n else {\n return new DataManager(this.dataSource, query).executeLocal(query);\n }\n }\n }\n return [];\n };\n Grid.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad|macintosh/.test(userAgent);\n };\n /**\n * @param {TouchEventArgs} e - Defines the TouchEventArgs\n * @returns {void}\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n // eslint-disable-next-line\n Grid.prototype.tapEvent = function (e) {\n if (this.getUserAgent()) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.dblClickHandler(e);\n this.notify(events.doubleTap, e);\n }\n }\n };\n /**\n * @param {string} prefix - specifies the prefix\n * @returns {string} returns the row uid\n * @hidden\n */\n Grid.prototype.getRowUid = function (prefix) {\n return \"\" + prefix + this.rowUid++;\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableVirtualContent = function () {\n return this.getContent().querySelector('.' + literals.movableContent);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenVirtualContent = function () {\n return this.getContent().querySelector('.' + literals.frozenContent);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.' + literals.movableHeader);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.' + literals.frozenHeader);\n };\n /**\n * @param {string} uid - specifies the uid\n * @returns {Element} returns the element\n * @hidden\n */\n Grid.prototype.getRowElementByUID = function (uid) {\n var rowEle;\n var rows = [];\n if (this.isFrozenGrid()) {\n var fRows = [].slice.call(this.getFrozenVirtualContent().querySelector(literals.tbody).children);\n var mRows = [].slice.call(this.getMovableVirtualContent().querySelector(literals.tbody).children);\n var frozenRigtRows = [];\n if (this.tablesCount === 3) {\n frozenRigtRows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody).children);\n }\n if (this.frozenRows) {\n rows = [].slice.call(this.getFrozenVirtualHeader().querySelector(literals.tbody).children);\n rows = rows.concat([].slice.call(this.getMovableVirtualHeader().querySelector(literals.tbody).children));\n if (this.tablesCount === 3) {\n var frHdr = this.getHeaderContent().querySelector('.e-frozen-right-header');\n rows = rows.concat([].slice.call(frHdr.querySelector(literals.tbody).children)).concat(frozenRigtRows);\n }\n rows = rows.concat(fRows).concat(mRows);\n }\n else {\n rows = fRows.concat(mRows).concat(frozenRigtRows);\n }\n }\n else {\n var cntRows = [].slice.call(this.getContent().querySelector(literals.tbody).children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getHeaderContent().querySelector(literals.tbody).children);\n rows = rows.concat(cntRows);\n }\n else {\n rows = cntRows;\n }\n }\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n if (row.getAttribute('data-uid') === uid) {\n rowEle = row;\n break;\n }\n }\n return rowEle;\n };\n /**\n * Gets the hidden columns from the Grid.\n *\n * @returns {Column[]} Returns the Column\n */\n Grid.prototype.getHiddenColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible === false) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * Calculates the page size by parent element height\n *\n * @param {number | string } containerHeight - specifies the container height\n * @returns {number} returns the page size\n */\n Grid.prototype.calculatePageSizeByParentHeight = function (containerHeight) {\n if (this.allowPaging) {\n if ((this.allowTextWrap && this.textWrapSettings.wrapMode === 'Header') || (!this.allowTextWrap)) {\n var pagesize = 0;\n if (containerHeight.indexOf('%') !== -1) {\n containerHeight = parseInt(containerHeight, 10) / 100 * this.element.clientHeight;\n }\n var nonContentHeight = this.getNoncontentHeight() + this.getRowHeight();\n if (containerHeight > nonContentHeight) {\n var contentHeight = 0;\n contentHeight = containerHeight - this.getNoncontentHeight();\n pagesize = (contentHeight / this.getRowHeight());\n }\n if (pagesize > 0) {\n return Math.floor(pagesize);\n }\n }\n }\n return 0;\n };\n Grid.prototype.getNoncontentHeight = function () {\n var height = 0;\n if (!isNullOrUndefined(this.getHeaderContent().clientHeight)) {\n height += this.getHeaderContent().clientHeight;\n }\n if (this.toolbar && !isNullOrUndefined(this.element.querySelector('.e-toolbar').clientHeight)) {\n height += this.element.querySelector('.e-toolbar').clientHeight;\n }\n if (this.allowPaging && !isNullOrUndefined(this.element.querySelector('.e-gridpager').clientHeight)) {\n height += this.element.querySelector('.e-gridpager').clientHeight;\n }\n if (this.showColumnChooser && !isNullOrUndefined(this.element.querySelector('.e-columnheader').clientHeight)) {\n height += this.element.querySelector('.e-columnheader').clientHeight;\n }\n if (this.allowGrouping && this.groupSettings.showDropArea && !isNullOrUndefined(this.element.querySelector('.e-groupdroparea').clientHeight)) {\n height += this.element.querySelector('.e-groupdroparea').clientHeight;\n }\n if (this.aggregates.length > 0 && !isNullOrUndefined(this.element.querySelector('.e-summaryrow').clientHeight)) {\n for (var i = 0; i < this.element.getElementsByClassName('e-summaryrow').length; i++) {\n height += this.element.getElementsByClassName('e-summaryrow')[parseInt(i.toString(), 10)].clientHeight;\n }\n }\n return height;\n };\n /**\n *To perform aggregate operation on a column.\n *\n * @param {AggregateColumnModel} summaryCol - Pass Aggregate Column details.\n * @param {Object} summaryData - Pass JSON Array for which its field values to be calculated.\n *\n * @returns {number} returns the summary values\n */\n Grid.prototype.getSummaryValues = function (summaryCol, summaryData) {\n return DataUtil.aggregates[summaryCol.type.toLowerCase()](summaryData, summaryCol.field);\n };\n /**\n * Sends a Post request to export Grid to Excel file in server side.\n *\n * @param {string} url - Pass Url for server side excel export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverExcelExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to Pdf file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverPdfExport = function (url) {\n this.isExcel = false;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to CSV file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverCsvExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * @param {string} url - Defines exporting url\n * @returns {void}\n * @hidden\n */\n Grid.prototype.exportGrid = function (url) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var grid = this;\n var query = grid.getDataModule().generateQuery(true);\n var state = new UrlAdaptor().processQuery(new DataManager({ url: '' }), query);\n var queries = JSON.parse(state.data);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var gridModel = JSON.parse(this.addOnPersist(['allowGrouping', 'allowPaging', 'pageSettings', 'sortSettings', 'allowPdfExport', 'allowExcelExport', 'aggregates',\n 'filterSettings', 'groupSettings', 'columns', 'locale', 'searchSettings']));\n var include = ['field', 'headerText', 'type', 'format', 'visible', 'foreignKeyValue', 'foreignKeyField',\n 'template', 'index', 'width', 'textAlign', 'headerTextAlign', 'columns'];\n gridModel.filterSettings.columns = queries.where;\n gridModel.searchSettings.fields = queries.search && queries.search[0]['fields'] || [];\n gridModel.sortSettings.columns = queries.sorted;\n gridModel.columns = this.setHeaderText(gridModel.columns, include);\n var form = this.createElement('form', { id: 'ExportForm', styles: 'display:none;' });\n var gridInput = this.createElement('input', { id: 'gridInput', attrs: { name: 'gridModel' } });\n gridInput.value = JSON.stringify(gridModel);\n form.method = 'POST';\n form.action = url;\n form.appendChild(gridInput);\n document.body.appendChild(form);\n form.submit();\n form.remove();\n };\n /**\n * @param {Column[]} columns - Defines array of columns\n * @param {string[]} include - Defines array of sting\n * @returns {Column[]} returns array of columns\n * @hidden\n */\n Grid.prototype.setHeaderText = function (columns, include) {\n for (var i = 0; i < columns.length; i++) {\n var column = this.getColumnByUid(columns[parseInt(i.toString(), 10)].uid);\n columns[parseInt(i.toString(), 10)].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[parseInt(i.toString(), 10)].template = 'true';\n }\n if (columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = getNumberFormat(this.getFormat(columns[parseInt(i.toString(), 10)].format), columns[parseInt(i.toString(), 10)].type, this.isExcel, this.currencyCode);\n }\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.setHeaderText(columns[parseInt(i.toString(), 10)].columns, include);\n }\n var keys = Object.keys(columns[parseInt(i.toString(), 10)]);\n for (var j = 0; j < keys.length; j++) {\n if (include.indexOf(keys[parseInt(j.toString(), 10)]) < 0) {\n delete columns[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n }\n }\n return columns;\n };\n Grid.prototype.getFormat = function (format) {\n return typeof (format) === 'object' ? !isNullOrUndefined(format.format) ?\n format.format : format.skeleton : format;\n };\n /**\n * @hidden\n * @returns {boolean} returns the isCollapseStateEnabled\n */\n Grid.prototype.isCollapseStateEnabled = function () {\n var isExpanded = 'isExpanded';\n return this[\"\" + isExpanded] === false;\n };\n /**\n * @param {number} key - Defines the primary key value.\n * @param {Object} rowData - Defines the rowData\n * @returns {void}\n */\n Grid.prototype.updateRowValue = function (key, rowData) {\n var args = {\n requestType: 'save', data: rowData\n };\n this.showSpinner();\n this.notify(events.updateData, args);\n this.refresh();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setForeignKeyData = function () {\n this.dataBind();\n var colpending = this.getDataModule().getForeignKeyDataState();\n if (colpending.isPending) {\n this.getDataModule().setForeignKeyDataState({});\n colpending.resolver();\n }\n else {\n this.getDataModule().setForeignKeyDataState({ isDataChanged: false });\n if (this.contentModule || this.headerModule) {\n this.renderModule.render();\n }\n }\n };\n /**\n * @param {string} field - specifies the field\n * @returns {void}\n * @hidden\n */\n Grid.prototype.resetFilterDlgPosition = function (field) {\n var header = this.getColumnHeaderByField(field);\n if (header) {\n var target = header.querySelector('.e-filtermenudiv');\n var filterDlg = this.element.querySelector('.e-filter-popup');\n if (target && filterDlg) {\n var gClient = this.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n if (filterDlg) {\n if ((filterDlg.offsetWidth + fClient.right) > gClient.right) {\n filterDlg.style.left = ((fClient.right - filterDlg.offsetWidth) - gClient.left).toString() + 'px';\n }\n else {\n filterDlg.style.left = (fClient.right - gClient.left).toString() + 'px';\n }\n }\n }\n }\n };\n /**\n * @param {any} callBack - specifies the callBack method\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line\n Grid.prototype.renderTemplates = function (callBack) {\n var isReactChild = this.parentDetails && this.parentDetails.parentInstObj && this.parentDetails.parentInstObj.isReact;\n if (isReactChild && this['portals']) {\n this.parentDetails.parentInstObj['portals'] = this.parentDetails.parentInstObj['portals']\n .concat(this['portals']);\n this.parentDetails.parentInstObj.renderTemplates(callBack);\n this['portals'] = undefined;\n }\n else {\n var portals = 'portals';\n this.notify('reactTemplateRender', this[\"\" + portals]);\n this.renderReactTemplates(callBack);\n }\n };\n /**\n * Apply the changes to the Grid without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchUpdate = function (changes) {\n this.processRowChanges(changes);\n };\n /**\n * Apply the changes to the Grid in one batch after 50ms without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchAsyncUpdate = function (changes) {\n this.processBulkRowChanges(changes);\n };\n Grid.prototype.processBulkRowChanges = function (changes) {\n var _this = this;\n if (!this.dataToBeUpdated) {\n this.dataToBeUpdated = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n setTimeout(function () {\n _this.processRowChanges(_this.dataToBeUpdated);\n _this.dataToBeUpdated = null;\n }, this.asyncTimeOut);\n }\n else {\n var loopstring = [literals.addedRecords, literals.changedRecords, literals.deletedRecords];\n var keyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < loopstring.length; i++) {\n if (changes[loopstring[parseInt(i.toString(), 10)]]) {\n compareChanges(this, changes, loopstring[parseInt(i.toString(), 10)], keyField);\n }\n }\n }\n };\n Grid.prototype.processRowChanges = function (changes) {\n var _this = this;\n var keyField = this.getPrimaryKeyFieldNames()[0];\n changes = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n var promise = this.getDataModule().saveChanges(changes, keyField, {}, this.getDataModule().generateQuery().requiresCount());\n if (this.getDataModule().isRemote()) {\n promise.then(function () {\n _this.setNewData();\n });\n }\n else {\n this.setNewData();\n }\n };\n Grid.prototype.setNewData = function () {\n var _this = this;\n var oldValues = JSON.parse(JSON.stringify(this.getCurrentViewRecords()));\n var getData = this.getDataModule().getData({}, this.getDataModule().generateQuery().requiresCount());\n getData.then(function (e) {\n _this.bulkRefresh(e.result, oldValues, e.count);\n });\n };\n Grid.prototype.deleteRowElement = function (row) {\n var tr = this.getRowElementByUID(row.uid);\n var index = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n remove(tr);\n if (this.getFrozenColumns()) {\n var mtr = this.getMovableRows()[parseInt(index.toString(), 10)];\n remove(mtr);\n }\n };\n Grid.prototype.bulkRefresh = function (result, oldValues, count) {\n var _this = this;\n var rowObj = this.getRowsObject();\n var keyField = this.getPrimaryKeyFieldNames()[0];\n var _loop_3 = function (i) {\n if (!result.filter(function (e) { return e[\"\" + keyField] === rowObj[parseInt(i.toString(), 10)].data[\"\" + keyField]; }).length) {\n this_3.deleteRowElement(rowObj[parseInt(i.toString(), 10)]);\n rowObj.splice(i, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < rowObj.length; i++) {\n _loop_3(i);\n i = out_i_1;\n }\n var _loop_4 = function (i) {\n var isRowExist;\n oldValues.filter(function (e) {\n if (e[\"\" + keyField] === result[parseInt(i.toString(), 10)][\"\" + keyField]) {\n if (e !== result[parseInt(i.toString(), 10)]) {\n _this.setRowData(result[parseInt(i.toString(), 10)][\"\" + keyField], result[parseInt(i.toString(), 10)]);\n }\n isRowExist = true;\n }\n });\n if (!isRowExist) {\n this_4.renderRowElement(result[parseInt(i.toString(), 10)], i);\n }\n };\n var this_4 = this;\n for (var i = 0; i < result.length; i++) {\n _loop_4(i);\n }\n this.currentViewData = result;\n var rows = [].slice.call(this.getContentTable().getElementsByClassName(literals.row));\n resetRowIndex(this, this.getRowsObject(), rows);\n setRowElements(this);\n if (this.allowPaging) {\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: { totalRecordsCount: count } });\n }\n };\n Grid.prototype.renderRowElement = function (data, index) {\n var row = new RowRenderer(this.serviceLocator, null, this);\n var model = new RowModelGenerator(this);\n var modelData = model.generateRows([data]);\n var tr = row.render(modelData[0], this.getColumns());\n var mTr;\n var mTbody;\n this.addRowObject(modelData[0], index);\n var tbody = this.getContentTable().querySelector(literals.tbody);\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.getFrozenColumns()) {\n var moveTbody = this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n }\n }\n if (this.getFrozenColumns()) {\n mTr = renderMovable(tr, this.getFrozenColumns(), this);\n if (this.frozenRows && index < this.frozenRows) {\n mTbody = this.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody);\n }\n else {\n mTbody = this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n }\n mTbody.appendChild(mTr);\n if (this.height === 'auto') {\n this.notify(events.frozenHeight, {});\n }\n }\n if (this.frozenRows && index < this.frozenRows) {\n tbody = this.getHeaderContent().querySelector(literals.tbody);\n }\n else {\n tbody = this.getContent().querySelector(literals.tbody);\n }\n tbody = this.getContent().querySelector(literals.tbody);\n tbody.appendChild(tr);\n };\n Grid.prototype.addRowObject = function (row, index) {\n var frzCols = this.getFrozenColumns();\n if (frzCols) {\n var mRows = this.getMovableRowsObject();\n var mRow = row.clone();\n mRow.cells = mRow.cells.slice(frzCols);\n row.cells = row.cells.slice(0, frzCols);\n mRows.splice(index, 1, mRow);\n }\n this.getRowsObject().splice(index, 1, row);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateVisibleExpandCollapseRows = function () {\n var rows = this.getRowsObject();\n for (var i = 0, len = rows.length; i < len; i++) {\n if ((rows[parseInt(i.toString(), 10)].isDataRow || rows[parseInt(i.toString(), 10)].isAggregateRow)\n && this.getRowElementByUID(rows[parseInt(i.toString(), 10)].uid).style.display === 'none') {\n rows[parseInt(i.toString(), 10)].visible = false;\n }\n else {\n rows[parseInt(i.toString(), 10)].visible = true;\n }\n }\n };\n /**\n * Method to sanitize any suspected untrusted strings and scripts before rendering them.\n *\n * @param {string} value - Specifies the html value to sanitize\n * @returns {string} Returns the sanitized html string\n * @hidden\n */\n Grid.prototype.sanitize = function (value) {\n if (this.enableHtmlSanitizer) {\n return SanitizeHtmlHelper.sanitize(value);\n }\n return value;\n };\n /**\n * @param {string | number} height - specifies the height\n * @returns {number | string} - specifies the height number\n * @hidden\n */\n Grid.prototype.getHeight = function (height) {\n if (!Number.isInteger(height) && height.indexOf('%') !== -1) {\n height = parseInt(height, 10) / 100 * this.element.clientHeight;\n }\n else if (!Number.isInteger(height) && this.height !== 'auto') {\n height = parseInt(height, 10);\n }\n else {\n height = this.height;\n }\n return height;\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right content\n */\n Grid.prototype.getFrozenRightContent = function () {\n return this.getContent().querySelector('.e-frozen-right-content');\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header\n */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.getHeaderContent().querySelector('.e-frozen-right-header');\n };\n /**\n * @hidden\n * @returns {Element} - returns movable header tbody\n */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getMovableVirtualHeader().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns movable content tbody\n */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getMovableVirtualContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen header tbody\n */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getFrozenVirtualHeader().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen left content tbody\n */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getFrozenVirtualContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header tbody\n */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getFrozenRightHeader().querySelector(literals.tbody);\n };\n /**\n * @returns {Element} returns frozen right content tbody\n * @hidden\n */\n Grid.prototype.getFrozenRightContentTbody = function () {\n var cnt = this.getFrozenRightContent();\n var tbody;\n if (cnt) {\n tbody = this.getFrozenRightContent().querySelector(literals.tbody);\n }\n return tbody;\n };\n /**\n * @param {boolean} isCustom - Defines custom filter dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomFilter = function (isCustom) {\n if (this.filterModule) {\n this.filterModule.showCustomFilter(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom sort dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomSort = function (isCustom) {\n if (this.sortModule) {\n this.sortModule.showCustomSort(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * To manually show the vertical row mode filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveFilterDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomFilter(true);\n }\n };\n /**\n * To manually show the vertical row sort filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveSortDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomSort(true);\n }\n };\n /**\n * @param {boolean} isColVirtualization - Defines column virtualization\n * @returns {Column[]} returns array of column models\n * @hidden\n */\n Grid.prototype.getCurrentVisibleColumns = function (isColVirtualization) {\n var cols = [];\n var gridCols = isColVirtualization ? this.getColumns() : this.columnModel;\n for (var _i = 0, gridCols_1 = gridCols; _i < gridCols_1.length; _i++) {\n var col = gridCols_1[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n Grid.prototype.enableInfiniteAggrgate = function () {\n if (this.enableInfiniteScrolling && this.groupSettings.columns.length && !this.groupSettings.disablePageWiseAggregates\n && !this.groupSettings.enableLazyLoading) {\n this.setProperties({ groupSettings: { disablePageWiseAggregates: true } }, true);\n }\n };\n var Grid_1;\n __decorate([\n Property([])\n ], Grid.prototype, \"currentViewData\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"parentDetails\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"showHider\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableStickyHeader\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], Grid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Complex({}, ResizeSettings)\n ], Grid.prototype, \"resizeSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPaging\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], Grid.prototype, \"pageSettings\", void 0);\n __decorate([\n Complex({}, LoadingIndicator)\n ], Grid.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableVirtualMaskRow\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], Grid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property('Ellipsis')\n ], Grid.prototype, \"clipMode\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], Grid.prototype, \"sortSettings\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], Grid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowSelection\", void 0);\n __decorate([\n Property(-1)\n ], Grid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], Grid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('Horizontal')\n ], Grid.prototype, \"rowRenderingMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], Grid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], Grid.prototype, \"filterSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowGrouping\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"autoFit\", void 0);\n __decorate([\n Complex({}, GroupSettings)\n ], Grid.prototype, \"groupSettings\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], Grid.prototype, \"editSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], Grid.prototype, \"aggregates\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Complex({}, ColumnChooserSettings)\n ], Grid.prototype, \"columnChooserSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHeaderFocus\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"width\", void 0);\n __decorate([\n Property('Default')\n ], Grid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"childGrid\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"queryString\", void 0);\n __decorate([\n Property('AllPages')\n ], Grid.prototype, \"printMode\", void 0);\n __decorate([\n Property('Expanded')\n ], Grid.prototype, \"hierarchyPrintMode\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Grid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"query\", void 0);\n __decorate([\n Property('USD')\n ], Grid.prototype, \"currencyCode\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('')\n ], Grid.prototype, \"cssClass\", void 0);\n __decorate([\n Property('All')\n ], Grid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Property({})\n ], Grid.prototype, \"currentAction\", void 0);\n __decorate([\n Property('22.2.12')\n ], Grid.prototype, \"ej2StatePersistenceVersion\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenAdaptiveDialog\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"commandClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"keyPressed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"checkBoxChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeAutoFill\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportGroupCaption\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupExpand\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupCollapse\", void 0);\n Grid = Grid_1 = __decorate([\n NotifyPropertyChanges\n ], Grid);\n return Grid;\n}(Component));\nexport { Grid };\n","/**\n * Specifies class names\n */\n/** @hidden */\nexport var rowCell = 'e-rowcell';\n/** @hidden */\nexport var gridHeader = 'e-gridheader';\n/** @hidden */\nexport var gridContent = 'e-gridcontent';\n/** @hidden */\nexport var gridFooter = 'e-gridfooter';\n/** @hidden */\nexport var headerContent = 'e-headercontent';\n/** @hidden */\nexport var movableContent = 'e-movablecontent';\n/** @hidden */\nexport var movableHeader = 'e-movableheader';\n/** @hidden */\nexport var frozenContent = 'e-frozencontent';\n/** @hidden */\nexport var frozenHeader = 'e-frozenheader';\n/** @hidden */\nexport var content = 'e-content';\n/** @hidden */\nexport var table = 'e-table';\n/** @hidden */\nexport var row = 'e-row';\n/** @hidden */\nexport var gridChkBox = 'e-gridchkbox';\n/** @hidden */\nexport var editedRow = 'e-editedrow';\n/** @hidden */\nexport var addedRow = 'e-addedrow';\n/**\n * Specifies repeated strings\n */\n/** @hidden */\nexport var changedRecords = 'changedRecords';\n/** @hidden */\nexport var addedRecords = 'addedRecords';\n/** @hidden */\nexport var deletedRecords = 'deletedRecords';\n/** @hidden */\nexport var leftRight = 'Left-Right';\n/** @hidden */\nexport var frozenRight = 'frozen-right';\n/** @hidden */\nexport var frozenLeft = 'frozen-left';\n/** @hidden */\nexport var dataColIndex = 'data-colindex';\n/** @hidden */\nexport var ariaColIndex = 'aria-colindex';\n/** @hidden */\nexport var dataRowIndex = 'data-rowindex';\n/** @hidden */\nexport var ariaRowIndex = 'aria-rowindex';\n/** @hidden */\nexport var tbody = 'tbody';\n/** @hidden */\nexport var colGroup = 'colgroup';\n/** @hidden */\nexport var open = 'open';\n/** @hidden */\nexport var change = 'change';\n/** @hidden */\nexport var focus = 'focus';\n/** @hidden */\nexport var create = 'created';\n/** @hidden */\nexport var beforeOpen = 'beforeOpen';\n/** @hidden */\nexport var downArrow = 'downArrow';\n/** @hidden */\nexport var upArrow = 'upArrow';\n/** @hidden */\nexport var pageUp = 'PageUp';\n/** @hidden */\nexport var pageDown = 'PageDown';\n/** @hidden */\nexport var enter = 'enter';\n/** @hidden */\nexport var shiftEnter = 'shiftEnter';\n/** @hidden */\nexport var tab = 'tab';\n/** @hidden */\nexport var shiftTab = 'shiftTab';\n","import { ChildProperty, compile as baseTemplateComplier, setValue, Internationalization, isUndefined, closest } from '@syncfusion/ej2-base';\nimport { extend as baseExtend, isNullOrUndefined, getValue, classList } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, addClass, attributes, remove, createElement, removeClass } from '@syncfusion/ej2-base';\nimport { isObject, select, selectAll } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate, UrlAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { Column } from '../models/column';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { Print } from '../actions/print';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n//https://typescript.codeplex.com/discussions/401501\n/**\n * Function to check whether target object implement specific interface\n *\n * @param {Object} target - specifies the target\n * @param {string} checkFor - specifies the checkfors\n * @returns {boolean} returns the boolean\n * @hidden\n */\nexport function doesImplementInterface(target, checkFor) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return target.prototype && checkFor in target.prototype;\n}\n/**\n * Function to get value from provided data\n *\n * @param {string} field - specifies the field\n * @param {Object} data - specifies the data\n * @param {ColumnModel} column - specifies the column\n * @returns {Object} returns the object\n * @hidden\n */\n// eslint-disable-next-line\nexport function valueAccessor(field, data, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, data);\n}\n/**\n * Defines the method used to apply custom header cell values from external function and display this on each header cell rendered.\n *\n * @param {string} field - specifies the field\n * @param {ColumnModel} column - specifies the column\n * @returns {object} headerValueAccessor\n * @hidden\n */\nexport function headerValueAccessor(field, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, column);\n}\n/**\n * The function used to update Dom using requestAnimationFrame.\n *\n * @param {Function} updateFunction - Function that contains the actual action\n * @param {object} callBack - defines the callback\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function getUpdateUsingRaf(updateFunction, callBack) {\n requestAnimationFrame(function () {\n try {\n callBack(null, updateFunction());\n }\n catch (e) {\n callBack(e);\n }\n });\n}\n/**\n * @hidden\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @returns {boolean} Returns isExportColumns\n */\nexport function isExportColumns(exportProperties) {\n return !isNullOrUndefined(exportProperties) &&\n !isNullOrUndefined(exportProperties.columns) && exportProperties.columns.length > 0;\n}\n/**\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function updateColumnTypeForExportColumns(exportProperties, gObj) {\n var exportColumns = exportProperties.columns;\n var gridColumns = gObj.columns;\n for (var i = 0; i < exportColumns.length; i++) {\n if (gridColumns.length - 1 >= i) {\n if (gridColumns[parseInt(i.toString(), 10)].columns) {\n for (var j = 0; j < gridColumns[parseInt(i.toString(), 10)].columns.length; j++) {\n exportColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)]\n .type = gridColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)].type;\n }\n }\n else {\n exportColumns[parseInt(i.toString(), 10)].type = gridColumns[parseInt(i.toString(), 10)].type;\n }\n }\n }\n}\n/**\n * @hidden\n * @param {IGrid} grid - Defines the grid\n * @returns {void}\n */\nexport function updatecloneRow(grid) {\n var nRows = [];\n var actualRows = grid.vRows;\n for (var i = 0; i < actualRows.length; i++) {\n if (actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n }\n else if (!actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n if (!actualRows[parseInt(i.toString(), 10)].isExpand && actualRows[parseInt(i.toString(), 10)].isCaptionRow) {\n i += getCollapsedRowsCount(actualRows[parseInt(i.toString(), 10)], grid);\n }\n }\n }\n grid.vcRows = nRows;\n}\nvar count = 0;\n/**\n * @hidden\n * @param {Row} val - Defines the value\n * @param {IGrid} grid - Defines the grid\n * @returns {number} Returns the collapsed row count\n */\nexport function getCollapsedRowsCount(val, grid) {\n count = 0;\n var gSummary = 'gSummary';\n var total = 'count';\n var gLen = grid.groupSettings.columns.length;\n var records = 'records';\n var items = 'items';\n var value = val[\"\" + gSummary];\n var dataRowCnt = 0;\n var agrCnt = 'aggregatesCount';\n if (value === val.data[\"\" + total]) {\n if (grid.groupSettings.columns.length && !isNullOrUndefined(val[\"\" + agrCnt]) && val[\"\" + agrCnt]) {\n if (grid.groupSettings.columns.length !== 1) {\n count += (val.indent !== 0 && (value) < 2) ? (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent) * val[\"\" + agrCnt])) :\n (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent - 1) * val[\"\" + agrCnt])) + val[\"\" + agrCnt];\n }\n else if (grid.groupSettings.columns.length === 1) {\n count += (val[\"\" + gSummary] * (gLen - val.indent)) + val[\"\" + agrCnt];\n }\n }\n else if (grid.groupSettings.columns.length) {\n if (grid.groupSettings.columns.length !== 1) {\n count += val[\"\" + gSummary] * (grid.groupSettings.columns.length - val.indent);\n }\n else {\n count += val[\"\" + gSummary];\n }\n }\n return count;\n }\n else {\n for (var i = 0, len = val.data[\"\" + items].length; i < len; i++) {\n var gLevel = val.data[\"\" + items][parseInt(i.toString(), 10)];\n count += gLevel[\"\" + items].length + ((gLen !== grid.columns.length) &&\n !isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) ? gLevel[\"\" + items][\"\" + records].length : 0);\n dataRowCnt += (!isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) && !isNullOrUndefined(val[\"\" + agrCnt])) ? gLevel[\"\" + items][\"\" + records].length :\n gLevel[\"\" + items].length;\n if (gLevel[\"\" + items].GroupGuid && gLevel[\"\" + items].childLevels !== 0) {\n recursive(gLevel);\n }\n }\n count += val.data[\"\" + items].length;\n if (!isNullOrUndefined(val[\"\" + agrCnt])) {\n if (val[\"\" + agrCnt] && count && dataRowCnt !== 0) {\n count += ((count - dataRowCnt) * val[\"\" + agrCnt]) + val[\"\" + agrCnt];\n }\n }\n }\n return count;\n}\n/**\n * @param {Object[]} row - Defines the row\n * @returns {void}\n * @hidden\n */\nexport function recursive(row) {\n var items = 'items';\n var rCount = 'count';\n for (var j = 0, length_1 = row[\"\" + items].length; j < length_1; j++) {\n var nLevel = row[\"\" + items][parseInt(j.toString(), 10)];\n count += nLevel[\"\" + rCount];\n if (nLevel[\"\" + items].childLevels !== 0) {\n recursive(nLevel);\n }\n }\n}\n/**\n * @param {Object[]} collection - Defines the array\n * @param {Object} predicate - Defines the predicate\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateArrayOrObject(collection, predicate) {\n var result = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n var pred = predicate(collection[parseInt(i.toString(), 10)], i);\n if (!isNullOrUndefined(pred)) {\n result.push(pred);\n }\n }\n return result;\n}\n/**\n * @param {Object[]} array - Defines the array\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateExtend(array) {\n var obj = [];\n for (var i = 0; i < array.length; i++) {\n obj.push(baseExtend({}, getActualProperties(array[parseInt(i.toString(), 10)]), {}, true));\n }\n return obj;\n}\n/**\n * @param {string | Function} template - Defines the template\n * @returns {Function} Returns the function\n * @hidden\n */\nexport function templateCompiler(template) {\n if (template) {\n try {\n var validSelector = template[0] !== '<';\n if (typeof template === 'function') {\n return baseTemplateComplier(template);\n }\n else if (validSelector && document.querySelectorAll(template).length) {\n return baseTemplateComplier(document.querySelector(template).innerHTML.trim());\n }\n else {\n return baseTemplateComplier(template);\n }\n }\n catch (e) {\n return baseTemplateComplier(template);\n }\n }\n return undefined;\n}\n/**\n * @param {Element} node - Defines the column\n * @param {Object} customAttributes - Defines the index\n * @returns {void}\n * @hidden\n */\nexport function setStyleAndAttributes(node, customAttributes) {\n var copyAttr = {};\n var literals = ['style', 'class'];\n //Dont touch the original object - make a copy\n baseExtend(copyAttr, customAttributes, {});\n if ('style' in copyAttr) {\n setStyleAttribute(node, copyAttr[literals[0]]);\n delete copyAttr[literals[0]];\n }\n if ('class' in copyAttr) {\n addClass([node], copyAttr[literals[1]]);\n delete copyAttr[literals[1]];\n }\n attributes(node, copyAttr);\n}\n/**\n * @param {Object} copied - Defines the column\n * @param {Object} first - Defines the inndex\n * @param {Object} second - Defines the second object\n * @param {string[]} exclude - Defines the exclude\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function extend(copied, first, second, exclude) {\n var moved = baseExtend(copied, first, second);\n var values = Object.keys(moved);\n for (var i = 0; i < values.length; i++) {\n if (exclude && exclude.indexOf(values[parseInt(i.toString(), 10)]) !== -1) {\n delete moved[values[parseInt(i.toString(), 10)]];\n }\n }\n return moved;\n}\n/**\n * @param {Column[]} columnModel - Defines the column\n * @param {number} ind - Defines the inndex\n * @returns {number} - Returns the columnindex\n * @hidden\n */\nexport function setColumnIndex(columnModel, ind) {\n if (ind === void 0) { ind = 0; }\n for (var i = 0, len = columnModel.length; i < len; i++) {\n if (columnModel[parseInt(i.toString(), 10)].columns) {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n ind = setColumnIndex(columnModel[parseInt(i.toString(), 10)].columns, ind);\n }\n else {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n }\n }\n return ind;\n}\n/**\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines the column\n * @param {boolean} autoWidth - Defines the autowidth\n * @param {IGrid} gObj - Defines the class name\n * @returns {Column} - Returns the columns\n * @hidden\n */\nexport function prepareColumns(columns, autoWidth, gObj) {\n for (var c = 0, len = columns.length; c < len; c++) {\n var column = void 0;\n if (typeof columns[parseInt(c.toString(), 10)] === 'string') {\n column = new Column({ field: columns[parseInt(c.toString(), 10)] }, gObj);\n }\n else if (!(columns[parseInt(c.toString(), 10)] instanceof Column) || columns[parseInt(c.toString(), 10)].columns) {\n if (!columns[parseInt(c.toString(), 10)].columns) {\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n else {\n columns[parseInt(c.toString(), 10)].columns = prepareColumns(columns[parseInt(c.toString(), 10)].columns, null, gObj);\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n }\n else {\n column = columns[parseInt(c.toString(), 10)];\n }\n if (column.type && column.type.toLowerCase() === 'checkbox') {\n column.allowReordering = false;\n }\n column.headerText = isNullOrUndefined(column.headerText) ? column.foreignKeyValue || column.field || '' : column.headerText;\n column.foreignKeyField = column.foreignKeyField || column.field;\n column.valueAccessor = (typeof column.valueAccessor === 'string' ? getValue(column.valueAccessor, window)\n : column.valueAccessor) || valueAccessor;\n column.width = autoWidth && isNullOrUndefined(column.width) ? 200 : column.width;\n if (isNullOrUndefined(column.visible)) {\n column.visible = true;\n }\n columns[parseInt(c.toString(), 10)] = column;\n }\n return columns;\n}\n/**\n * @param {HTMLElement} popUp - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the moouse event\n * @param {string} className - Defines the class name\n * @returns {void}\n * @hidden\n */\nexport function setCssInGridPopUp(popUp, e, className) {\n var popUpSpan = popUp.querySelector('span');\n var position = popUp.parentElement.getBoundingClientRect();\n var targetPosition = e.target.getBoundingClientRect();\n popUpSpan.className = className;\n popUp.style.display = '';\n var isBottomTail = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY) > popUp.offsetHeight + 10;\n popUp.style.top = targetPosition.top - position.top +\n (isBottomTail ? -(popUp.offsetHeight + 10) : popUp.offsetHeight + 10) + 'px'; //10px for tail element\n popUp.style.left = getPopupLeftPosition(popUp, e, targetPosition, position.left) + 'px';\n if (isBottomTail) {\n popUp.querySelector('.e-downtail').style.display = '';\n popUp.querySelector('.e-uptail').style.display = 'none';\n }\n else {\n popUp.querySelector('.e-downtail').style.display = 'none';\n popUp.querySelector('.e-uptail').style.display = '';\n }\n}\n/**\n * @param {HTMLElement} popup - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the mouse event\n * @param {Object} targetPosition - Defines the target position\n * @param {number} targetPosition.top - Defines the top position\n * @param {number} targetPosition.left - Defines the left position\n * @param {number} targetPosition.right - Defines the right position\n * @param {number} left - Defines the left position\n * @returns {number} Returns the popup left position\n * @hidden\n */\nfunction getPopupLeftPosition(popup, e, targetPosition, left) {\n var width = popup.offsetWidth / 2;\n var x = getPosition(e).x;\n if (x - targetPosition.left < width) {\n return targetPosition.left - left;\n }\n else if (targetPosition.right - x < width) {\n return targetPosition.right - left - width * 2;\n }\n else {\n return x - left - width;\n }\n}\n/**\n * @param {Object} obj - Defines the object\n * @returns {Object} Returns the Properties\n * @hidden\n */\nexport function getActualProperties(obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the string selector\n * @param {boolean} isID - Defines the isID\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function parentsUntil(elem, selector, isID) {\n var parent = elem;\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n break;\n }\n parent = parent.parentElement;\n }\n return parent;\n}\n/**\n * @param {Element} element - Defines the element\n * @param {Element} elements - Defines the element\n * @returns {number} Returns the element index\n * @hidden\n */\nexport function getElementIndex(element, elements) {\n var index = -1;\n for (var i = 0, len = elements.length; i < len; i++) {\n if (elements[parseInt(i.toString(), 10)].isEqualNode(element)) {\n index = i;\n break;\n }\n }\n return index;\n}\n/**\n * @param {Object} value - Defines the value\n * @param {Object} collection - defines the collection\n * @returns {number} Returns the array\n * @hidden\n */\nexport function inArray(value, collection) {\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[parseInt(i.toString(), 10)] === value) {\n return i;\n }\n }\n return -1;\n}\n/**\n * @param {Object} collection - Defines the collection\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getActualPropFromColl(collection) {\n var coll = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n // eslint-disable-next-line no-prototype-builtins\n if (collection[parseInt(i.toString(), 10)].hasOwnProperty('properties')) {\n coll.push(collection[parseInt(i.toString(), 10)].properties);\n }\n else {\n coll.push(collection[parseInt(i.toString(), 10)]);\n }\n }\n return coll;\n}\n/**\n * @param {Element} target - Defines the target element\n * @param {string} selector - Defines the selector\n * @returns {void}\n * @hidden\n */\nexport function removeElement(target, selector) {\n var elements = [].slice.call(target.querySelectorAll(selector));\n for (var i = 0; i < elements.length; i++) {\n remove(elements[parseInt(i.toString(), 10)]);\n }\n}\n/**\n * @param {MouseEvent | TouchEvent} e Defines the mouse event\n * @returns {IPosition} Returns the position\n * @hidden\n */\nexport function getPosition(e) {\n var position = {};\n position.x = (isNullOrUndefined(e.clientX) ? e.changedTouches[0].clientX :\n e.clientX);\n position.y = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY);\n return position;\n}\nvar uid = 0;\n/**\n * @param {string} prefix - Defines the prefix string\n * @returns {string} Returns the uid\n * @hidden\n */\nexport function getUid(prefix) {\n return prefix + uid++;\n}\n/**\n * @param {Element | DocumentFragment} elem - Defines the element\n * @param {Element[] | NodeList} children - Defines the Element\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function appendChildren(elem, children) {\n for (var i = 0, len = children.length; i < len; i++) {\n if (len === children.length) {\n elem.appendChild(children[parseInt(i.toString(), 10)]);\n }\n else {\n elem.appendChild(children[0]);\n }\n }\n return elem;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the selector\n * @param {boolean} isID - Defines isID\n * @returns {Element} Return the element\n * @hidden\n */\nexport function parents(elem, selector, isID) {\n var parent = elem;\n var parents = [];\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\n/**\n * @param {AggregateType | string} type - Defines the type\n * @param {Object} data - Defines the data\n * @param {AggregateColumnModel} column - Defines the column\n * @param {Object} context - Defines the context\n * @returns {Object} Returns the calculated aggragate\n * @hidden\n */\nexport function calculateAggregate(type, data, column, context) {\n if (type === 'Custom') {\n var temp = column.customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n return temp ? temp.call(context, data, column) : '';\n }\n return (column.field in data || data instanceof Array) ? DataUtil.aggregates[type.toLowerCase()](data, column.field) : null;\n}\n/** @hidden */\nvar scrollWidth = null;\n/** @hidden\n * @returns {number} - Returns the scrollbarwidth\n */\nexport function getScrollBarWidth() {\n if (scrollWidth !== null) {\n return scrollWidth;\n }\n var divNode = document.createElement('div');\n var value = 0;\n divNode.style.cssText = 'width:100px;height: 100px;overflow: scroll;position: absolute;top: -9999px;';\n document.body.appendChild(divNode);\n value = (divNode.offsetWidth - divNode.clientWidth) | 0;\n document.body.removeChild(divNode);\n return scrollWidth = value;\n}\n/** @hidden */\nvar rowHeight;\n/**\n * @param {HTMLElement} element - Defines the element\n * @returns {number} Returns the roww height\n * @hidden\n */\nexport function getRowHeight(element) {\n if (rowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('td').getBoundingClientRect();\n element.removeChild(table);\n rowHeight = Math.ceil(rect.height);\n return rowHeight;\n}\n/** @hidden */\nvar actualRowHeight;\n/**\n * @param {HTMLElement} element - Defines the HTMl element\n * @returns {number} Returns the row height\n * @hidden\n */\nexport function getActualRowHeight(element) {\n if (actualRowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('tr').getBoundingClientRect();\n element.removeChild(table);\n return rect.height;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {boolean} - Returns is complex field\n * @hidden\n */\nexport function isComplexField(field) {\n return field.split('.').length > 1;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the get complex field ID\n * @hidden\n */\nexport function getComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/\\./g, '___');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the parsed column field id\n * @hidden\n */\nexport function getParsedFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/[^a-zA-Z0-9_.]/g, '\\\\$&');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the set complex field ID\n * @hidden\n */\nexport function setComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/___/g, '.');\n}\n/**\n * @param {Column} col - Defines the column\n * @param {string} type - Defines the type\n * @param {Element} elem - Defines th element\n * @returns {boolean} Returns is Editable\n * @hidden\n */\nexport function isEditable(col, type, elem) {\n var row = parentsUntil(elem, literals.row);\n var isOldRow = !row ? true : row && !row.classList.contains('e-insertedrow');\n if (type === 'beginEdit' && isOldRow) {\n if (col.isIdentity || col.isPrimaryKey || !col.allowEditing) {\n return false;\n }\n return true;\n }\n else if (type === 'add' && col.isIdentity) {\n return false;\n }\n else {\n if (isOldRow && !col.allowEditing && !col.isIdentity && !col.isPrimaryKey) {\n return false;\n }\n return true;\n }\n}\n/**\n * @param {IGrid} inst - Defines the IGrid\n * @returns {boolean} Returns is action prevent in boolean\n * @hidden\n */\nexport function isActionPrevent(inst) {\n var dlg = select('#' + inst.element.id + 'EditConfirm', inst.element);\n return inst.editSettings.mode === 'Batch' &&\n (selectAll('.e-updatedtd', inst.element).length) && inst.editSettings.showConfirmDialog &&\n (dlg ? dlg.classList.contains('e-popup-close') : true);\n}\n/**\n * @param {any} elem - Defines the element\n * @param {boolean} action - Defines the boolean for action\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function wrap(elem, action) {\n var clName = 'e-wrap';\n elem = elem instanceof Array ? elem : [elem];\n for (var i = 0; i < elem.length; i++) {\n if (action) {\n elem[parseInt(i.toString(), 10)].classList.add(clName);\n }\n else {\n elem[parseInt(i.toString(), 10)].classList.remove(clName);\n }\n }\n}\n/**\n * @param {ServiceLocator} serviceLocator - Defines the service locator\n * @param {Column} column - Defines the column\n * @returns {void}\n * @hidden\n */\nexport function setFormatter(serviceLocator, column) {\n var fmtr = serviceLocator.getService('valueFormatter');\n var format = 'format';\n var args;\n if (column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') {\n args = { type: column.type === 'dateonly' ? 'date' : column.type, skeleton: column.format };\n if ((typeof (column.format) === 'string') && column.format !== 'yMd') {\n args[\"\" + format] = column.format;\n }\n }\n switch (column.type) {\n case 'date':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'dateonly':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'datetime':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'number':\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n column.setParser(fmtr.getParserFunction({ format: column.format }));\n break;\n }\n}\n/**\n * @param {Element} cells - Defines the cell element\n * @param {boolean} add - Defines the add\n * @param {string} args - Defines the args\n * @returns {void}\n * @hidden\n */\nexport function addRemoveActiveClasses(cells, add) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n classList(cells[parseInt(i.toString(), 10)], args.slice(), []);\n cells[parseInt(i.toString(), 10)].setAttribute('aria-selected', 'true');\n }\n else {\n classList(cells[parseInt(i.toString(), 10)], [], args.slice());\n cells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n }\n}\n/**\n * @param {string} result - Defines th string\n * @returns {string} Returns the distinct staing values\n * @hidden\n */\nexport function distinctStringValues(result) {\n var temp = {};\n var res = [];\n for (var i = 0; i < result.length; i++) {\n if (!(result[parseInt(i.toString(), 10)] in temp)) {\n res.push(result[parseInt(i.toString(), 10)].toString());\n temp[result[parseInt(i.toString(), 10)]] = 1;\n }\n }\n return res;\n}\n/**\n * @param {Element} target - Defines the target\n * @param {Dialog} dialogObj - Defines the dialog\n * @returns {void}\n * @hidden\n */\nexport function getFilterMenuPostion(target, dialogObj) {\n var elementVisible = dialogObj.element.style.display;\n dialogObj.element.style.display = 'block';\n var dlgWidth = dialogObj.width;\n var newpos = calculateRelativeBasedPosition(target, dialogObj.element);\n dialogObj.element.style.display = elementVisible;\n dialogObj.element.style.top = (newpos.top + target.getBoundingClientRect().height) - 5 + 'px';\n var leftPos = ((newpos.left - dlgWidth) + target.clientWidth);\n if (leftPos < 1) {\n dialogObj.element.style.left = (dlgWidth + leftPos) - 16 + 'px'; // right calculation\n }\n else {\n dialogObj.element.style.left = leftPos + -4 + 'px';\n }\n}\n/**\n * @param {Object} args - Defines the args\n * @param {Popup} args.popup - Defines the args for popup\n * @param {Dialog} dialogObj - Defines the dialog obj\n * @returns {void}\n * @hidden\n */\nexport function getZIndexCalcualtion(args, dialogObj) {\n args.popup.element.style.zIndex = (dialogObj.zIndex + 1).toString();\n}\n/**\n * @param {Element} elem - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function toogleCheckbox(elem) {\n var span = elem.querySelector('.e-frame');\n var input = span.previousSibling;\n if (span.classList.contains('e-check')) {\n input.checked = false;\n classList(span, ['e-uncheck'], ['e-check']);\n }\n else {\n input.checked = true;\n classList(span, ['e-check'], ['e-uncheck']);\n }\n}\n/**\n * @param {HTMLInputElement} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function setChecked(elem, checked) {\n elem.checked = checked;\n}\n/**\n * @param {string} uid - Defines the string\n * @param {Element} elem - Defines the Element\n * @param {string} className - Defines the classname\n * @returns {Element} Returns the box wrap\n * @hidden\n */\nexport function createCboxWithWrap(uid, elem, className) {\n var div = createElement('div', { className: className });\n div.appendChild(elem);\n div.setAttribute('uid', uid);\n return div;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function removeAddCboxClasses(elem, checked) {\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n if (checked) {\n elem.classList.add('e-check');\n }\n else {\n elem.classList.add('e-uncheck');\n }\n}\n/**\n * Refresh the Row model's foreign data.\n *\n * @param {IRow} row - Grid Row model object.\n * @param {Column[]} columns - Foreign columns array.\n * @param {Object} data - Updated Row data.\n * @returns {void}\n * @hidden\n */\nexport function refreshForeignData(row, columns, data) {\n for (var i = 0; i < columns.length; i++) {\n setValue(columns[parseInt(i.toString(), 10)].field, getForeignData(columns[parseInt(i.toString(), 10)], data), row.foreignKeyData);\n }\n var cells = row.cells;\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].isForeignKey) {\n setValue('foreignKeyData', getValue(cells[parseInt(i.toString(), 10)].column.field, row.foreignKeyData), cells[parseInt(i.toString(), 10)]);\n }\n }\n}\n/**\n * Get the foreign data for the corresponding cell value.\n *\n * @param {Column} column - Foreign Key column\n * @param {Object} data - Row data.\n * @param {string | number} lValue - cell value.\n * @param {Object} foreignKeyData - foreign data source.\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getForeignData(column, data, lValue, foreignKeyData) {\n var fField = column.foreignKeyField;\n var key = (!isNullOrUndefined(lValue) ? lValue : valueAccessor(column.field, data, column));\n key = isNullOrUndefined(key) ? '' : key;\n var query = new Query();\n var fdata = foreignKeyData || ((column.dataSource instanceof DataManager) && column.dataSource.dataSource.json.length ?\n column.dataSource.dataSource.json : column.columnData);\n if (key.getDay) {\n query.where(getDatePredicate({ field: fField, operator: 'equal', value: key, matchCase: false }));\n }\n else {\n query.where(fField, '==', key, false);\n }\n return new DataManager(fdata).executeLocal(query);\n}\n/**\n * To use to get the column's object by the foreign key value.\n *\n * @param {string} foreignKeyValue - Defines ForeignKeyValue.\n * @param {Column[]} columns - Array of column object.\n * @returns {Column} Returns the element\n * @hidden\n */\nexport function getColumnByForeignKeyValue(foreignKeyValue, columns) {\n var column;\n return columns.some(function (col) {\n column = col;\n return col.foreignKeyValue === foreignKeyValue;\n }) && column;\n}\n/**\n * @param {number} value - Defines the date or month value\n * @returns {string} Returns string\n * @hidden\n */\nexport function padZero(value) {\n if (value < 10) {\n return '0' + value;\n }\n return String(value);\n}\n/**\n * @param {PredicateModel} filterObject - Defines the filterObject\n * @param {string} type - Defines the type\n * @param {boolean} isExecuteLocal - Defines whether the data actions performed in client and used for dateonly type field\n * @returns {Predicate} Returns the Predicate\n * @hidden\n */\nexport function getDatePredicate(filterObject, type, isExecuteLocal) {\n var datePredicate;\n var prevDate;\n var nextDate;\n var prevObj = baseExtend({}, getActualProperties(filterObject));\n var nextObj = baseExtend({}, getActualProperties(filterObject));\n if (isNullOrUndefined(filterObject.value) || filterObject.value === '') {\n datePredicate = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n return datePredicate;\n }\n var value = new Date(filterObject.value);\n if (type === 'dateonly' && !isExecuteLocal) {\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var dateOnlyString = prevObj.value.getFullYear() + '-' + padZero(prevObj.value.getMonth() + 1) + '-' + padZero(prevObj.value.getDate());\n var predicates = new Predicate(prevObj.field, prevObj.operator, dateOnlyString, false);\n datePredicate = predicates;\n }\n else {\n if (filterObject.operator === 'equal' || filterObject.operator === 'notequal') {\n if (type === 'datetime') {\n prevDate = new Date(value.setSeconds(value.getSeconds() - 1));\n nextDate = new Date(value.setSeconds(value.getSeconds() + 2));\n filterObject.value = new Date(value.setSeconds(nextDate.getSeconds() - 1));\n }\n else {\n prevDate = new Date(value.setHours(0) - 1);\n nextDate = new Date(value.setHours(24));\n }\n prevObj.value = prevDate;\n nextObj.value = nextDate;\n if (filterObject.operator === 'equal') {\n prevObj.operator = 'greaterthan';\n nextObj.operator = 'lessthan';\n }\n else if (filterObject.operator === 'notequal') {\n prevObj.operator = 'lessthanorequal';\n nextObj.operator = 'greaterthanorequal';\n }\n var predicateSt = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n var predicateEnd = new Predicate(nextObj.field, nextObj.operator, nextObj.value, false);\n datePredicate = filterObject.operator === 'equal' ? predicateSt.and(predicateEnd) : predicateSt.or(predicateEnd);\n }\n else {\n if (type === 'date' && (filterObject.operator === 'lessthanorequal' || filterObject.operator === 'greaterthan')) {\n prevObj.value = new Date(value.setHours(24) - 1);\n }\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var predicates = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n datePredicate = predicates;\n }\n }\n if (filterObject.setProperties) {\n filterObject.setProperties({ ejpredicate: datePredicate }, true);\n }\n else {\n filterObject.ejpredicate = datePredicate;\n }\n return datePredicate;\n}\n/**\n * @param {Element} ele - Defines the element\n * @param {number} frzCols - Defines the frozen columns\n * @param {IGrid} gObj - Defines the IGrid\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function renderMovable(ele, frzCols, gObj) {\n frzCols = frzCols && gObj && gObj.isRowDragable() ? frzCols + 1 : frzCols;\n var mEle = ele.cloneNode(true);\n for (var i = 0; i < frzCols; i++) {\n mEle.removeChild(mEle.children[0]);\n }\n for (var i = frzCols, len = ele.childElementCount; i < len; i++) {\n ele.removeChild(ele.children[ele.childElementCount - 1]);\n }\n return mEle;\n}\n/**\n * @param {IGrid} grid - Defines the IGrid\n * @returns {boolean} Returns true if group adaptive is true\n * @hidden\n */\nexport function isGroupAdaptive(grid) {\n return grid.enableVirtualization && grid.groupSettings.columns.length > 0 && grid.isVirtualAdaptive &&\n !grid.groupSettings.enableLazyLoading;\n}\n/**\n * @param {string} field - Defines the Field\n * @param {Object} object - Defines the objec\n * @returns {any} Returns the object\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getObject(field, object) {\n if (field === void 0) { field = ''; }\n if (field) {\n var value = object;\n var splits = field.split('.');\n for (var i = 0; i < splits.length && !isNullOrUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n if (isUndefined(value)) {\n var newCase = splits[parseInt(i.toString(), 10)].charAt(0).toUpperCase()\n + splits[parseInt(i.toString(), 10)].slice(1);\n value = object[\"\" + newCase] || object[(\"\" + newCase).charAt(0).toLowerCase() + (\"\" + newCase).slice(1)];\n }\n }\n return value;\n }\n}\n/**\n * @param {string | Object} format - defines the format\n * @param {string} colType - Defines the coltype\n * @returns {string} Returns the custom Data format\n * @hidden\n */\nexport function getCustomDateFormat(format, colType) {\n var intl = new Internationalization();\n var formatvalue;\n var formatter = 'format';\n var type = 'type';\n if (colType === 'date') {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'date', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n else {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'dateTime', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n return formatvalue;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getExpandedState(gObj, hierarchyPrintMode) {\n var rows = gObj.getRowsObject();\n var obj = {};\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isExpand && !row.isDetailRow) {\n var index = gObj.allowPaging && gObj.printMode === 'AllPages' ? row.index +\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : row.index;\n obj[parseInt(index.toString(), 10)] = {};\n obj[parseInt(index.toString(), 10)].isExpand = true;\n obj[parseInt(index.toString(), 10)].gridModel = getPrintGridModel(row.childGrid, hierarchyPrintMode);\n obj[parseInt(index.toString(), 10)].gridModel.query = gObj.childGrid.query;\n }\n }\n return obj;\n}\n/**\n * @param {IGrid} gObj - Defines the grid objct\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {IGrid} Returns the IGrid\n * @hidden\n */\nexport function getPrintGridModel(gObj, hierarchyPrintMode) {\n if (hierarchyPrintMode === void 0) { hierarchyPrintMode = 'Expanded'; }\n var printGridModel = {};\n if (!gObj) {\n return printGridModel;\n }\n var isFrozen = gObj.isFrozenGrid() && !gObj.getFrozenColumns();\n for (var _i = 0, _a = Print.printGridProp; _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'columns') {\n printGridModel[\"\" + key] = getActualPropFromColl(isFrozen ? gObj.getColumns() : gObj[\"\" + key]);\n }\n else if (key === 'allowPaging') {\n printGridModel[\"\" + key] = gObj.printMode === 'CurrentPage';\n }\n else {\n printGridModel[\"\" + key] = getActualProperties(gObj[\"\" + key]);\n }\n }\n printGridModel['enableHover'] = false;\n if (gObj.childGrid && hierarchyPrintMode !== 'None') {\n printGridModel.expandedRows = getExpandedState(gObj, hierarchyPrintMode);\n }\n return printGridModel;\n}\n/**\n * @param {Object} copied - Defines the copied object\n * @param {Object} first - Defines the first object\n * @param {Object} second - Defines the second object\n * @param {boolean} deep - Defines the deep\n * @returns {Object} Returns the extended object\n * @hidden\n */\nexport function extendObjWithFn(copied, first, second, deep) {\n var res = copied || {};\n var len = arguments.length;\n if (deep) {\n len = len - 1;\n }\n for (var i = 1; i < len; i++) {\n // eslint-disable-next-line prefer-rest-params\n if (!arguments[parseInt(i.toString(), 10)]) {\n continue;\n }\n // eslint-disable-next-line prefer-rest-params\n var obj1 = arguments[parseInt(i.toString(), 10)];\n var keys = Object.keys(Object.getPrototypeOf(obj1)).length ?\n Object.keys(obj1).concat(getPrototypesOfObj(obj1)) : Object.keys(obj1);\n for (var i_1 = 0; i_1 < keys.length; i_1++) {\n var source = res[keys[parseInt(i_1.toString(), 10)]];\n var cpy = obj1[keys[parseInt(i_1.toString(), 10)]];\n var cln = void 0;\n if (deep && (isObject(cpy) || Array.isArray(cpy))) {\n if (isObject(cpy)) {\n cln = source ? source : {};\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend({}, cln, cpy, deep);\n }\n else {\n cln = source ? source : [];\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend([], cln, cpy, deep);\n }\n }\n else {\n res[keys[parseInt(i_1.toString(), 10)]] = cpy;\n }\n }\n }\n return res;\n}\n/**\n * @param {Object} obj - Defines the obj\n * @returns {string[]} Returns the string\n * @hidden\n */\nfunction getPrototypesOfObj(obj) {\n var keys = [];\n while (Object.getPrototypeOf(obj) && Object.keys(Object.getPrototypeOf(obj)).length) {\n keys = keys.concat(Object.keys(Object.getPrototypeOf(obj)));\n obj = Object.getPrototypeOf(obj);\n }\n return keys;\n}\n/**\n * @param {Column[]} column - Defines the Column\n * @returns {number} Returns the column Depth\n * @hidden\n */\nexport function measureColumnDepth(column) {\n var max = 0;\n for (var i = 0; i < column.length; i++) {\n var depth = checkDepth(column[parseInt(i.toString(), 10)], 0);\n if (max < depth) {\n max = depth;\n }\n }\n return max + 1;\n}\n/**\n * @param {Column} col - Defines the Column\n * @param {number} index - Defines the index\n * @returns {number} Returns the depth\n * @hidden\n */\nexport function checkDepth(col, index) {\n var max = index;\n var indices = [];\n if (col.columns) {\n index++;\n for (var i = 0; i < col.columns.length; i++) {\n indices[parseInt(i.toString(), 10)] = checkDepth(col.columns[parseInt(i.toString(), 10)], index);\n }\n for (var j = 0; j < indices.length; j++) {\n if (max < indices[parseInt(j.toString(), 10)]) {\n max = indices[parseInt(j.toString(), 10)];\n }\n }\n index = max;\n }\n return index;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {PredicateModel[]} filteredCols - Defines the PredicateModel\n * @returns {void}\n * @hidden\n */\nexport function refreshFilteredColsUid(gObj, filteredCols) {\n for (var i = 0; i < filteredCols.length; i++) {\n filteredCols[parseInt(i.toString(), 10)].uid = filteredCols[parseInt(i.toString(), 10)].isForeignKey ?\n getColumnByForeignKeyValue(filteredCols[parseInt(i.toString(), 10)].field, gObj.getForeignKeyColumns()).uid\n : gObj.enableColumnVirtualization ? getColumnModelByFieldName(gObj, filteredCols[parseInt(i.toString(), 10)].field).uid\n : gObj.getColumnByField(filteredCols[parseInt(i.toString(), 10)].field).uid;\n }\n}\n/** @hidden */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Global;\n(function (Global) {\n // eslint-disable-next-line prefer-const\n Global.timer = null;\n})(Global || (Global = {}));\n/**\n * @param {Element} element - Defines the element\n * @returns {Object} Returns the transform values\n * @hidden\n */\nexport function getTransformValues(element) {\n var style = document.defaultView.getComputedStyle(element, null);\n var transformV = style.getPropertyValue('transform');\n var replacedTv = transformV.replace(/,/g, '');\n var translateX = parseFloat((replacedTv).split(' ')[4]);\n var translateY = parseFloat((replacedTv).split(' ')[5]);\n return { width: translateX, height: translateY };\n}\n/**\n * @param {Element} rootElement - Defines the root Element\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function applyBiggerTheme(rootElement, element) {\n if (rootElement.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n}\n/**\n * @param {HTMLElement} mTD - Defines the movable TD\n * @param {HTMLElement} fTD - Defines the Frozen TD\n * @returns {void}\n * @hidden\n */\nexport function alignFrozenEditForm(mTD, fTD) {\n if (mTD && fTD) {\n var mHeight = closest(mTD, '.' + literals.row).getBoundingClientRect().height;\n var fHeight = closest(fTD, '.' + literals.row).getBoundingClientRect().height;\n if (mHeight > fHeight) {\n fTD.style.height = mHeight + 'px';\n }\n else {\n mTD.style.height = fHeight + 'px';\n }\n }\n}\n/**\n * @param {Element} row - Defines row element\n * @param {IGrid} gridObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function ensureLastRow(row, gridObj) {\n var cntOffset = gridObj.getContent().firstElementChild.offsetHeight;\n return row && row.getBoundingClientRect().top > cntOffset;\n}\n/**\n * @param {Element} row - Defines row element\n * @param {number} rowTop - Defines row top number\n * @returns {boolean} Returns first row is true\n * @hidden\n */\nexport function ensureFirstRow(row, rowTop) {\n return row && row.getBoundingClientRect().top < rowTop;\n}\n/**\n * @param {number} index - Defines index\n * @param {IGrid} gObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function isRowEnteredInGrid(index, gObj) {\n var rowHeight = gObj.getRowHeight();\n var startIndex = gObj.getContent().firstElementChild.scrollTop / rowHeight;\n var endIndex = startIndex + (gObj.getContent().firstElementChild.offsetHeight / rowHeight);\n return index < endIndex && index > startIndex;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} data - Defines the query\n * @returns {number} Returns the edited data index\n * @hidden\n */\nexport function getEditedDataIndex(gObj, data) {\n var keyField = gObj.getPrimaryKeyFieldNames()[0];\n var dataIndex;\n gObj.getCurrentViewRecords().filter(function (e, index) {\n if (keyField.includes('.')) {\n var currentValue = getObject(keyField, e);\n var originalValue = getObject(keyField, data);\n if (currentValue === originalValue) {\n dataIndex = index;\n }\n }\n else {\n if (e[\"\" + keyField] === data[\"\" + keyField]) {\n dataIndex = index;\n }\n }\n });\n return dataIndex;\n}\n/**\n * @param {Object} args - Defines the argument\n * @param {Query} query - Defines the query\n * @returns {FilterStateObj} Returns the filter state object\n * @hidden\n */\nexport function eventPromise(args, query) {\n var state = getStateEventArgument(query);\n var def = new Deferred();\n state.dataSource = def.resolve;\n state.action = args;\n return { state: state, deffered: def };\n}\n/**\n * @param {Query} query - Defines the query\n * @returns {Object} Returns the state event argument\n * @hidden\n */\nexport function getStateEventArgument(query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return data;\n}\n/**\n * @param {IGrid} gObj - Defines the Igrid\n * @returns {boolean} Returns the ispercentageWidth\n * @hidden\n */\nexport function ispercentageWidth(gObj) {\n var columns = gObj.getVisibleColumns();\n var percentageCol = 0;\n var undefinedWidthCol = 0;\n for (var i = 0; i < columns.length; i++) {\n if (isUndefined(columns[parseInt(i.toString(), 10)].width)) {\n undefinedWidthCol++;\n }\n else if (columns[parseInt(i.toString(), 10)].width.toString().indexOf('%') !== -1) {\n percentageCol++;\n }\n }\n return (gObj.width === 'auto' || typeof (gObj.width) === 'string' && gObj.width.indexOf('%') !== -1) &&\n !gObj.groupSettings.showGroupedColumn && gObj.groupSettings.columns.length\n && percentageCol && !undefinedWidthCol;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {Row[]} rows - Defines the row\n * @param {HTMLTableRowElement[]} rowElms - Row elements\n * @param {number} index - Row index\n * @param {number} startRowIndex - Start Row Index\n * @returns {void}\n * @hidden\n */\nexport function resetRowIndex(gObj, rows, rowElms, index, startRowIndex) {\n var startIndex = index ? index : 0;\n for (var i = startRowIndex ? startRowIndex : 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)] && rows[parseInt(i.toString(), 10)].isDataRow) {\n rows[parseInt(i.toString(), 10)].index = startIndex;\n rows[parseInt(i.toString(), 10)].isAltRow = gObj.enableAltRow ? startIndex % 2 !== 0 : false;\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.dataRowIndex, startIndex.toString());\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.ariaRowIndex, (startIndex + 1).toString());\n if (rows[parseInt(i.toString(), 10)].isAltRow) {\n rowElms[parseInt(i.toString(), 10)].classList.add('e-altrow');\n }\n else {\n rowElms[parseInt(i.toString(), 10)].classList.remove('e-altrow');\n }\n for (var j = 0; j < rowElms[parseInt(i.toString(), 10)].cells.length; j++) {\n rowElms[parseInt(i.toString(), 10)].cells[parseInt(j.toString(), 10)].setAttribute('index', startIndex.toString());\n }\n startIndex++;\n }\n }\n if (!rows.length) {\n gObj.renderModule.emptyRow(true);\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} changes - Defines the changes\n * @param {string} type - Defines the type\n * @param {string} keyField - Defines the keyfield\n * @returns {void}\n * @hidden\n */\nexport function compareChanges(gObj, changes, type, keyField) {\n var newArray = gObj.dataToBeUpdated[\"\" + type].concat(changes[\"\" + type]).reduce(function (r, o) {\n r[o[\"\" + keyField]] = r[o[\"\" + keyField]] === undefined ? o : Object.assign(r[o[\"\" + keyField]], o);\n return r;\n }, {});\n gObj.dataToBeUpdated[\"\" + type] = Object.keys(newArray).map(function (k) { return newArray[\"\" + k]; });\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function setRowElements(gObj) {\n if (gObj.isFrozenGrid()) {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-movableheader .e-row, .e-movablecontent .e-row'));\n var cls = gObj.getFrozenMode() === literals.leftRight ? '.e-frozen-left-header .e-row, .e-frozen-left-content .e-row'\n : '.e-frozenheader .e-row, .e-frozencontent .e-row';\n (gObj).contentModule.freezeRowElements =\n [].slice.call(gObj.element.querySelectorAll(cls));\n if (gObj.getFrozenMode() === literals.leftRight) {\n gObj.contentModule.frozenRightRowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-frozen-right-header .e-row, .e-frozen-right-content .e-row'));\n }\n }\n else {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-row:not(.e-addedrow)'));\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Cell} cells - Defines the callback function\n * @param {freezeTable} tableName - Defines the row\n * @returns {Cell[]} Returns the cell\n * @hidden\n */\nexport function splitFrozenRowObjectCells(gObj, cells, tableName) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n var right = gObj.getFrozenRightColumnsCount();\n var frozenMode = gObj.getFrozenMode();\n var drag = gObj.isRowDragable() ? 1 : 0;\n var rightIndex = frozenMode === 'Right' ? left + movable : left + movable + drag;\n var mvblIndex = frozenMode === 'Right' ? left : left + drag;\n var mvblEndIdx = frozenMode === 'Right' ? cells.length - right - drag\n : right ? cells.length - right : cells.length;\n if (tableName === literals.frozenLeft) {\n cells = cells.slice(0, left ? left + drag : cells.length);\n }\n else if (tableName === literals.frozenRight) {\n cells = cells.slice(rightIndex, cells.length);\n }\n else if (tableName === 'movable') {\n cells = cells.slice(mvblIndex, mvblEndIdx);\n }\n return cells;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object.\n * @param {boolean} visibleOnly - Defines to return only visible columns.\n * @returns {{frozenLeft: Column[], movable: Column[], frozenRight: Column[]}} - Returns all frozenLeft, movable and frozenRight Columns as object.\n * @hidden\n */\nexport function getExactFrozenMovableColumn(gObj, visibleOnly) {\n var columnModel = gObj.getColumns();\n var movableColumns = [];\n var frozenLeftColumns = [];\n var frozenRightColumns = [];\n for (var i = 0; i < columnModel.length; i++) {\n if (isNullOrUndefined(visibleOnly) || !visibleOnly || visibleOnly === columnModel[parseInt(i.toString(), 10)].visible) {\n if (columnModel[parseInt(i.toString(), 10)].freeze === 'Left' || columnModel[parseInt(i.toString(), 10)].freezeTable === 'frozen-left') {\n frozenLeftColumns.push(columnModel[parseInt(i.toString(), 10)]);\n }\n else if (columnModel[parseInt(i.toString(), 10)].freeze === 'Right' || columnModel[parseInt(i.toString(), 10)].freezeTable === 'frozen-right') {\n frozenRightColumns.push(columnModel[parseInt(i.toString(), 10)]);\n }\n else {\n movableColumns.push(columnModel[parseInt(i.toString(), 10)]);\n }\n }\n }\n return { frozenLeft: frozenLeftColumns, movable: movableColumns, frozenRight: frozenRightColumns };\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function gridActionHandler(gObj, callBack, rows, force, rowObj) {\n if (rows[0].length || force) {\n if (rowObj) {\n callBack(literals.frozenLeft, rows[0], rowObj[0]);\n }\n else {\n callBack(literals.frozenLeft, rows[0]);\n }\n }\n if (gObj.isFrozenGrid() && (rows[1].length || force)) {\n if (rowObj) {\n callBack('movable', rows[1], rowObj[1]);\n }\n else {\n callBack('movable', rows[1]);\n }\n }\n if ((gObj.getFrozenMode() === literals.leftRight || gObj.getFrozenMode() === 'Right') && (rows[2].length || force)) {\n if (rowObj) {\n callBack(literals.frozenRight, rows[2], rowObj[2]);\n }\n else {\n callBack(literals.frozenRight, rows[2]);\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @returns {Row} Returns the row\n * @hidden\n */\nexport function getGridRowObjects(gObj) {\n return [gObj.getFrozenMode() !== 'Right' ? gObj.getRowsObject() : [], gObj.getMovableRowsObject(), gObj.getFrozenRightRowsObject()];\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getGridRowElements(gObj) {\n return [\n gObj.getFrozenMode() !== 'Right' ? gObj.getAllDataRows(true) : [],\n gObj.getAllMovableDataRows(true), gObj.getAllFrozenRightDataRows(true)\n ];\n}\n/**\n * @param {Element} row - Defines the row\n * @param {number} start - Defines the start index\n * @param {number} end - Defines the end index\n * @returns {void}\n * @hidden\n */\nexport function sliceElements(row, start, end) {\n var cells = row.children;\n var len = cells.length;\n var k = 0;\n for (var i = 0; i < len; i++, k++) {\n if (i >= start && i < end) {\n continue;\n }\n row.removeChild(row.children[parseInt(k.toString(), 10)]);\n k--;\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid Object\n * @param {Column} col - Defines the column\n * @param {number} rowIndex - Defines the rowindex\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getCellsByTableName(gObj, col, rowIndex) {\n if (col.getFreezeTableName() === 'movable') {\n return [].slice.call(gObj.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n return [].slice.call(gObj.getFrozenRightDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n }\n else {\n return [].slice.call(gObj.getDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n }\n}\n/**\n * @param {IGrid} gObj - Defines the column\n * @param {Column} col - Defines the index\n * @param {number} rowIndex - Defines the rules\n * @param {number} index - Defines the movable column rules\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getCellByColAndRowIndex(gObj, col, rowIndex, index) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n index = col.getFreezeTableName() === 'movable' ? index - left : col.getFreezeTableName() === literals.frozenRight\n ? index - (left + movable) : index;\n return getCellsByTableName(gObj, col, rowIndex)[parseInt(index.toString(), 10)];\n}\n/**\n * @param {Column} col - Defines the column\n * @param {number} index - Defines the index\n * @param {Object} rules - Defines the rules\n * @param {Object} mRules - Defines the movable column rules\n * @param {Object} frRules - Defines the Frozen rules\n * @param {number} len - Defines the length\n * @param {boolean} isCustom - Defines custom form validation\n * @returns {void}\n * @hidden\n */\nexport function setValidationRuels(col, index, rules, mRules, frRules, len, isCustom) {\n if (isCustom) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else {\n if (col.getFreezeTableName() === literals.frozenLeft\n || (!index && col.getFreezeTableName() === literals.frozenRight) || len === 1) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === 'movable' || !col.getFreezeTableName()) {\n mRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n frRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getMovableTbody(gObj) {\n var tbody;\n if (gObj.isFrozenGrid()) {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getMovableHeaderTbody()\n : gObj.getMovableContentTbody();\n }\n return tbody;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getFrozenRightTbody(gObj) {\n var tbody;\n if (gObj.getFrozenMode() === literals.leftRight) {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getFrozenRightHeaderTbody()\n : gObj.getFrozenRightContentTbody();\n }\n return tbody;\n}\n/**\n * @param {Element} tbody - Table body\n * @param {Element} mTbody - Movanle table body\n * @param {Element} frTbody - Frozen right table body\n * @param {Element[]} tr - Table rows\n * @param {Element[]} mTr - Movable table rows\n * @param {Element[]} frTr - Frozen right table rows\n * @param {Function} callBack - Callback function\n * @returns {void}\n * @hidden\n */\nexport function setRowsInTbody(tbody, mTbody, frTbody, tr, mTr, frTr, callBack) {\n if (tbody && tr) {\n callBack(tbody, tr);\n }\n if (mTbody && mTr) {\n callBack(mTbody, mTr);\n }\n if (frTbody && frTr) {\n callBack(frTbody, frTr);\n }\n}\n/**\n * @param {string} numberFormat - Format\n * @param {string} type - Value type\n * @param {boolean} isExcel - Boolean property\n * @param {string} currencyCode - Specifies the currency code to be used for formatting.\n * @returns {string} returns formated value\n * @hidden\n */\nexport function getNumberFormat(numberFormat, type, isExcel, currencyCode) {\n var format;\n var intl = new Internationalization();\n if (type === 'number') {\n try {\n format = intl.getNumberPattern({ format: numberFormat, currency: currencyCode, useGrouping: true }, true);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n else if (type === 'date' || type === 'time' || type === 'datetime') {\n try {\n format = intl.getDatePattern({ skeleton: numberFormat, type: type }, isExcel);\n if (isNullOrUndefined(format)) {\n // eslint-disable-next-line\n throw 'error';\n }\n }\n catch (error) {\n try {\n format = intl.getDatePattern({ format: numberFormat, type: type }, isExcel);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n }\n else {\n format = numberFormat;\n }\n if (type !== 'number') {\n var patternRegex = /G|H|c|'| a|yy|y|EEEE|E/g;\n var mtch_1 = { 'G': '', 'H': 'h', 'c': 'd', '\\'': '\"', ' a': ' AM/PM', 'yy': 'yy', 'y': 'yyyy', 'EEEE': 'dddd', 'E': 'ddd' };\n format = format.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return mtch_1[\"\" + pattern];\n });\n }\n return format;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @returns {void}\n * @hidden\n */\nexport function addBiggerDialog(gObj) {\n if (gObj.enableAdaptiveUI) {\n var dialogs = document.getElementsByClassName('e-responsive-dialog');\n for (var i = 0; i < dialogs.length; i++) {\n dialogs[parseInt(i.toString(), 10)].classList.add('e-bigger');\n }\n }\n}\n/**\n * @param {string} value - specifies the trr\n * @param {Object} mapObject - specifies the idx\n * @returns {Object | string} returns object or string\n * @hidden\n */\nexport function performComplexDataOperation(value, mapObject) {\n var returnObj;\n var length = value.split('.').length;\n var splits = value.split('.');\n var duplicateMap = mapObject;\n for (var i = 0; i < length; i++) {\n returnObj = duplicateMap[splits[parseInt(i.toString(), 10)]];\n duplicateMap = returnObj;\n }\n return returnObj;\n}\n/**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @param {IGrid} parent - Grid instance\n * @param {boolean} isContent - check for content renderer\n * @returns {void}\n * @hidden\n */\nexport function setDisplayValue(tr, idx, displayVal, rows, parent, isContent) {\n var trs = Object.keys(tr);\n var actualIndex = idx;\n for (var i = 0; i < trs.length; i++) {\n var td = tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)];\n if (parent && !parent.isFrozenGrid() && !parent.isRowDragable()) {\n td = (!isNullOrUndefined(td) && (parseInt(td.getAttribute('data-colindex'), 10) === idx))\n ? td : tr[parseInt(i.toString(), 10)].querySelector(\"td[data-colindex=\\\"\" + idx + \"\\\"]\");\n if (isNullOrUndefined(td)) {\n continue;\n }\n else {\n idx = td.cellIndex;\n }\n }\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell').length && td) {\n setStyleAttribute(tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.contains('e-hide')) {\n removeClass([tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)]], ['e-hide']);\n }\n if (isContent && parent.isRowDragable()) {\n var index = parent.getFrozenColumns() ? idx : idx + 1;\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(index.toString(), 10)].visible = displayVal === '' ? true : false;\n }\n else {\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible = displayVal === '' ? true : false;\n if (rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible === false) {\n tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.add('e-hide');\n }\n }\n idx = actualIndex;\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function addRemoveEventListener(parent, evt, isOn, module) {\n for (var _i = 0, evt_1 = evt; _i < evt_1.length; _i++) {\n var inst = evt_1[_i];\n if (isOn) {\n parent.on(inst.event, inst.handler, module);\n }\n else {\n parent.off(inst.event, inst.handler);\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function createEditElement(parent, column, classNames, attr) {\n var complexFieldName = getComplexFieldID(column.field);\n attr = Object.assign(attr, {\n id: parent.element.id + complexFieldName,\n name: complexFieldName, 'e-mappinguid': column.uid\n });\n return parent.createElement('input', {\n className: classNames, attrs: attr\n });\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} uid - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByUid(gObj, uid) {\n var column;\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.uid === uid) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} field - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByFieldName(gObj, field) {\n var column;\n if (!gObj.columnModel) {\n gObj.getColumns();\n }\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field === field) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {string} id - Defines component id\n * @param {string[]} evts - Defines events\n * @param {object} handlers - Defines event handlers\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function registerEventHandlers(id, evts, handlers, instance) {\n instance.eventHandlers[\"\" + id] = {};\n for (var i = 0; i < evts.length; i++) {\n instance.eventHandlers[\"\" + id][evts[parseInt(i.toString(), 10)]] = handlers[evts[parseInt(i.toString(), 10)]];\n }\n}\n/**\n * @param {any} component - Defines component instance\n * @param {string[]} evts - Defines events\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function removeEventHandlers(component, evts, instance) {\n for (var i = 0; i < evts.length; i++) {\n if (component.isDestroyed) {\n break;\n }\n component.removeEventListener(evts[parseInt(i.toString(), 10)], instance.eventHandlers[component.element.id][evts[parseInt(i.toString(), 10)]]);\n }\n}\n/**\n * @param {IGrid | IXLFilter} parent - Defines parent instance\n * @param {string[]} templates - Defines the templates name which are needs to clear\n * @returns {void}\n * @hidden\n */\nexport function clearReactVueTemplates(parent, templates) {\n parent.destroyTemplate(templates);\n if (parent.isReact) {\n parent.renderTemplates();\n }\n}\n/**\n *\n * @param { Element } row - Defines row element\n * @returns { number } row index\n */\nexport function getRowIndexFromElement(row) {\n return parseInt(row.getAttribute(literals.dataRowIndex), 10);\n}\n/**\n *\n * @param { string[] } fields - Defines grouped fields\n * @param { values } values - Defines caption keys\n * @param { any } instance - Defines dynamic class instance\n * @returns { Predicate } returns filter predicate\n */\n// eslint-disable-next-line\nexport function generateExpandPredicates(fields, values, instance) {\n var filterCols = [];\n for (var i = 0; i < fields.length; i++) {\n var column = instance.parent.getColumnByField(fields[parseInt(i.toString(), 10)]);\n var value = values[parseInt(i.toString(), 10)] === 'null' ? null : values[parseInt(i.toString(), 10)];\n var pred = {\n field: fields[parseInt(i.toString(), 10)], predicate: 'or', uid: column.uid, operator: 'equal', type: column.type,\n matchCase: instance.allowCaseSensitive, ignoreAccent: instance.parent.filterSettings.ignoreAccent\n };\n if (value === '' || isNullOrUndefined(value)) {\n filterCols = filterCols.concat(CheckBoxFilterBase.generateNullValuePredicates(pred));\n }\n else {\n filterCols.push(extend({}, { value: value }, pred));\n }\n }\n return CheckBoxFilterBase.getPredicate(filterCols);\n}\n/**\n *\n * @param { Predicate } pred - Defines filter predicate\n * @returns { Predicate[] } Returns formed predicate\n */\nexport function getPredicates(pred) {\n var predicateList = [];\n for (var _i = 0, _a = Object.keys(pred); _i < _a.length; _i++) {\n var prop = _a[_i];\n predicateList.push(pred[\"\" + prop]);\n }\n return predicateList;\n}\n/**\n *\n * @param { number } index - Defines group caption indent\n * @param { Row[] } rowsObject - Defines rows object\n * @returns { { fields: string[], keys: string[] } } Returns grouped keys and values\n */\nexport function getGroupKeysAndFields(index, rowsObject) {\n var fields = [];\n var keys = [];\n for (var i = index; i >= 0; i--) {\n if (rowsObject[parseInt(i.toString(), 10)].isCaptionRow\n && fields.indexOf(rowsObject[parseInt(i.toString(), 10)].data.field) === -1\n && (rowsObject[parseInt(i.toString(), 10)].indent < rowsObject[parseInt(index.toString(), 10)].indent || i === index)) {\n fields.push(rowsObject[parseInt(i.toString(), 10)].data.field);\n keys.push(rowsObject[parseInt(i.toString(), 10)].data.key);\n if (rowsObject[parseInt(i.toString(), 10)].indent === 0) {\n break;\n }\n }\n }\n return { fields: fields, keys: keys };\n}\n// eslint-disable-next-line\n/**\n *\n * @param { number[][] } checkActiveMatrix - Defines matrix to check\n * @param { number[] } checkCellIndex - Defines index to check\n * @param { boolean } next - Defines select next or previous index\n * @returns { number[] } - Returns next active current index\n */\nexport function findCellIndex(checkActiveMatrix, checkCellIndex, next) {\n var activeMatrix = checkActiveMatrix;\n var cellIndex = checkCellIndex;\n var currentCellIndexPass = false;\n if (next) {\n for (var i = cellIndex[0]; i < activeMatrix.length; i++) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = 0; j < rowCell.length; j++) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n else {\n for (var i = cellIndex[0]; i >= 0; i--) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = rowCell.length - 1; j >= 0; j--) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n return cellIndex;\n}\n/**\n *\n * @param { string } string - Defines string need to capitalized first letter\n * @returns { string } - Returns capitalized first letter string\n */\nexport function capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n","/* tslint:disable-next-line:max-line-length */\nimport { EventHandler, isNullOrUndefined, extend, classList, addClass, removeClass, Browser, getValue, setValue } from '@syncfusion/ej2-base';\nimport { parentsUntil, getUid, appendChildren, getDatePredicate, getObject, extendObjWithFn, eventPromise, setChecked, clearReactVueTemplates, padZero } from '../base/util';\nimport { remove, debounce, Internationalization, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getForeignData } from '../base/util';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { getFilterMenuPostion, toogleCheckbox, createCboxWithWrap, removeAddCboxClasses, getColumnByForeignKeyValue } from '../base/util';\n/**\n * @hidden\n * `CheckBoxFilterBase` module is used to handle filtering action.\n */\nvar CheckBoxFilterBase = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IXLFilter} parent - specifies the IXLFilter\n * @hidden\n */\n function CheckBoxFilterBase(parent) {\n this.isExecuteLocal = false;\n this.existingPredicate = {};\n this.foreignKeyQuery = new Query();\n /** @hidden */\n this.filterState = true;\n this.values = {};\n this.renderEmpty = false;\n this.isCheckboxFilterTemplate = false;\n this.parent = parent;\n this.id = this.parent.element.id;\n this.valueFormatter = new ValueFormatter(this.parent.locale);\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([this.cBoxTrue, this.cBoxFalse], this.parent.cssClass.split(' '));\n }\n else {\n addClass([this.cBoxTrue, this.cBoxFalse], [this.parent.cssClass]);\n }\n }\n }\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.destroy = function () {\n this.closeDialog();\n };\n CheckBoxFilterBase.prototype.wireEvents = function () {\n EventHandler.add(this.dlg, 'click', this.clickHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyupHandler, this);\n this.searchHandler = debounce(this.searchBoxKeyUp, 200);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.add(elem, 'keyup', this.searchHandler, this);\n }\n };\n CheckBoxFilterBase.prototype.unWireEvents = function () {\n EventHandler.remove(this.dlg, 'click', this.clickHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyupHandler);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.remove(elem, 'keyup', this.searchHandler);\n }\n };\n CheckBoxFilterBase.prototype.foreignKeyFilter = function (args, fColl, mPredicate) {\n var _this = this;\n var fPredicate = {};\n var filterCollection = [];\n var query = this.foreignKeyQuery.clone();\n this.options.column.dataSource.\n executeQuery(query.where(mPredicate)).then(function (e) {\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: _this.options.column });\n args.ejpredicate = fPredicate.predicate.predicates;\n var fpred = fPredicate.predicate.predicates;\n for (var i = 0; i < fpred.length; i++) {\n filterCollection.push({\n field: fpred[parseInt(i.toString(), 10)].field,\n predicate: 'or',\n matchCase: fpred[parseInt(i.toString(), 10)].ignoreCase,\n ignoreAccent: fpred[parseInt(i.toString(), 10)].ignoreAccent,\n operator: fpred[parseInt(i.toString(), 10)].operator,\n value: fpred[parseInt(i.toString(), 10)].value,\n type: _this.options.type\n });\n }\n args.filterCollection = filterCollection.length ? filterCollection :\n fColl.filter(function (col) { return col.field = _this.options.field; });\n _this.options.handler(args);\n });\n };\n CheckBoxFilterBase.prototype.foreignFilter = function (args, value) {\n var operator = this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') : (this.options.column.type ? 'contains' : 'equal');\n var initalPredicate = new Predicate(this.options.column.foreignKeyValue, operator, value, true, this.options.ignoreAccent);\n this.foreignKeyFilter(args, [args.filterCollection], initalPredicate);\n };\n CheckBoxFilterBase.prototype.searchBoxClick = function (e) {\n var target = e.target;\n if (target.classList.contains('e-searchclear')) {\n this.sInput.value = target.classList.contains('e-chkcancel-icon') ? '' : this.sInput.value;\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n this.sInput.focus();\n }\n };\n CheckBoxFilterBase.prototype.searchBoxKeyUp = function (e) {\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n };\n CheckBoxFilterBase.prototype.updateSearchIcon = function () {\n if (this.sInput.value.length) {\n classList(this.sIcon, ['e-chkcancel-icon'], ['e-search-icon']);\n document.body.querySelector('.e-chkcancel-icon').setAttribute('title', this.localeObj.getConstant('Clear'));\n }\n else {\n classList(this.sIcon, ['e-search-icon'], ['e-chkcancel-icon']);\n document.body.querySelector('.e-search-icon').setAttribute('title', this.localeObj.getConstant('Search'));\n }\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - Defines localization key\n * @returns {string} - returns localization label\n */\n CheckBoxFilterBase.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n CheckBoxFilterBase.prototype.updateDataSource = function () {\n var dataSource = this.options.dataSource;\n var str = 'object';\n if (!(dataSource instanceof DataManager)) {\n for (var i = 0; i < dataSource.length; i++) {\n // eslint-disable-next-line valid-typeof\n if (typeof dataSource !== str) {\n var obj = {};\n obj[this.options.field] = dataSource[parseInt(i.toString(), 10)];\n dataSource[parseInt(i.toString(), 10)] = obj;\n }\n }\n }\n };\n CheckBoxFilterBase.prototype.updateModel = function (options) {\n this.options = options;\n this.existingPredicate = options.actualPredicate || {};\n this.options.dataSource = options.dataSource;\n this.options.dataManager = options.dataManager ? options.dataManager : options.dataSource;\n this.updateDataSource();\n this.options.type = options.type;\n this.options.format = options.format || '';\n this.options.ignoreAccent = options.ignoreAccent || false;\n this.options.filteredColumns = options.filteredColumns || this.parent.filterSettings.columns;\n this.options.query = options.query || new Query();\n this.options.allowCaseSensitive = options.allowCaseSensitive || false;\n this.options.uid = options.column.uid;\n this.options.disableHtmlEncode = options.column.disableHtmlEncode || false;\n this.values = {};\n this.localeObj = options.localeObj;\n this.isFiltered = options.filteredColumns.length;\n };\n CheckBoxFilterBase.prototype.getAndSetChkElem = function (options) {\n this.dlg = this.parent.createElement('div', {\n id: this.id + this.options.type + '_excelDlg',\n attrs: { uid: this.options.column.uid },\n className: 'e-checkboxfilter e-filter-popup'\n });\n this.sBox = this.parent.createElement('div', { className: 'e-searchcontainer' });\n if (!options.hideSearchbox) {\n this.sInput = this.parent.createElement('input', {\n id: this.id + '_SearchBox',\n className: 'e-searchinput'\n });\n this.sIcon = this.parent.createElement('span', {\n className: 'e-searchclear e-search-icon e-icons e-input-group-icon', attrs: {\n type: 'text', title: this.getLocalizedLabel('Search')\n }\n });\n this.searchBox = this.parent.createElement('span', { className: 'e-searchbox e-fields' });\n this.searchBox.appendChild(this.sInput);\n this.sBox.appendChild(this.searchBox);\n var inputargs = {\n element: this.sInput, floatLabelType: 'Never', properties: {\n placeholder: this.getLocalizedLabel('Search'),\n cssClass: this.parent.cssClass\n }\n };\n Input.createInput(inputargs, this.parent.createElement);\n this.searchBox.querySelector('.e-input-group').appendChild(this.sIcon);\n }\n this.spinner = this.parent.createElement('div', { className: 'e-spinner' }); //for spinner\n this.cBox = this.parent.createElement('div', {\n id: this.id + this.options.type + '_CheckBoxList',\n className: 'e-checkboxlist e-fields'\n });\n this.spinner.appendChild(this.cBox);\n this.sBox.appendChild(this.spinner);\n return this.sBox;\n };\n CheckBoxFilterBase.prototype.showDialog = function (options) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: this.options.field, columnType: this.options.type, cancel: false\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrBegin, args);\n if (args.cancel) {\n options.cancel = args.cancel;\n return;\n }\n this.dialogObj = new Dialog({\n visible: false, content: this.sBox,\n close: this.closeDialog.bind(this),\n enableRtl: this.parent.enableRtl,\n width: (!isNullOrUndefined(parentsUntil(options.target, 'e-bigger')))\n || this.parent.element.classList.contains('e-device') ? 260 : 255,\n target: this.parent.element, animationSettings: { effect: 'None' },\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: {\n content: this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true\n }\n },\n {\n click: this.btnClick.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.getLocalizedLabel(this.isExcel ? 'CancelButton' : 'ClearButton') }\n }],\n created: this.dialogCreated.bind(this),\n open: this.dialogOpen.bind(this),\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveFilter(options);\n this.dlg.setAttribute('aria-label', this.getLocalizedLabel('ExcelFilterDialogARIA'));\n if (options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-responsive-dialog > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlg);\n }\n else {\n this.parent.element.appendChild(this.dlg);\n }\n this.dialogObj.appendTo(this.dlg);\n this.dialogObj.element.style.maxHeight = options.isResponsiveFilter ? 'none' : this.options.height + 'px';\n this.dialogObj.show();\n var content = this.dialogObj.element.querySelector('.e-dlg-content');\n content.appendChild(this.sBox);\n this.wireEvents();\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n else {\n createSpinner({ target: this.spinner, cssClass: this.parent.cssClass ? this.parent.cssClass : null }, this.parent.createElement);\n showSpinner(this.spinner);\n }\n this.getAllData();\n };\n CheckBoxFilterBase.prototype.renderResponsiveFilter = function (options) {\n if (options.isResponsiveFilter) {\n this.dialogObj.buttons = [{}];\n this.dialogObj.position = { X: '', Y: '' };\n this.dialogObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dialogObj.width = '100%';\n }\n };\n CheckBoxFilterBase.prototype.dialogCreated = function (e) {\n if (this.options.isResponsiveFilter) {\n this.dialogObj.element.style.left = '0px';\n }\n else {\n if (!Browser.isDevice) {\n getFilterMenuPostion(this.options.target, this.dialogObj);\n }\n else {\n this.dialogObj.position = { X: 'center', Y: 'center' };\n }\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, e);\n }\n };\n CheckBoxFilterBase.prototype.openDialog = function (options) {\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n };\n CheckBoxFilterBase.prototype.closeDialog = function () {\n if (this.dialogObj && !this.dialogObj.isDestroyed) {\n this.isBlanks = false;\n var filterTemplateCol = this.options.columns.filter(function (col) { return col.getFilterItemTemplate(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var registeredTemplate = this.parent.registeredTemplate;\n if (filterTemplateCol.length && !isNullOrUndefined(registeredTemplate) && registeredTemplate.filterItemTemplate) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n }\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterItemTemplate']);\n }\n this.parent.notify(events.filterMenuClose, { field: this.options.field });\n this.dialogObj.destroy();\n this.unWireEvents();\n remove(this.dlg);\n this.dlg = null;\n this.parent.notify(events.filterDialogClose, {});\n }\n };\n /**\n * @param {Column} col - Defines column details\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.clearFilter = function (col) {\n // eslint-disable-next-line max-len\n var args = { instance: this, handler: this.clearFilter, cancel: false };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n this.options.handler({ action: 'clear-filter', field: col ? col.field : this.options.field });\n };\n CheckBoxFilterBase.prototype.btnClick = function (e) {\n if (this.filterState) {\n if ((e.target.tagName.toLowerCase() === 'input' && e.target.classList.contains('e-searchinput')) ||\n e.keyCode === 13) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else {\n var text = e.target.firstChild.textContent.toLowerCase();\n if (this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton').toLowerCase() === text) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else if (this.getLocalizedLabel('ClearButton').toLowerCase() === text) {\n this.clearFilter();\n }\n }\n this.closeDialog();\n }\n else if (!(e.target.tagName.toLowerCase() === 'input')) {\n this.clearFilter();\n this.closeDialog();\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.fltrBtnHandler = function () {\n var _this = this;\n var checked = [].slice.call(this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)'));\n var check = checked;\n var optr = 'equal';\n var ddlValue = this.dialogObj.element.querySelector('.e-dropdownlist');\n if (ddlValue) {\n this.options.operator = optr = ddlValue.ej2_instances[0].value;\n }\n this.isMenuNotEqual = this.options.operator === 'notequal';\n var searchInput;\n if (!this.options.hideSearchbox) {\n searchInput = this.searchBox.querySelector('.e-searchinput');\n }\n var caseSen = this.options.allowCaseSensitive;\n var defaults = {\n field: this.options.field, predicate: this.isMenuNotEqual ? 'and' : 'or', uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var isNotEqual = this.itemsCnt !== checked.length && this.itemsCnt - checked.length < checked.length;\n if (isNotEqual && searchInput && searchInput.value === '') {\n optr = this.isMenuNotEqual ? 'equal' : 'notequal';\n checked = [].slice.call(this.cBox.querySelectorAll('.e-uncheck:not(.e-selectall)'));\n defaults.predicate = this.isMenuNotEqual ? 'or' : 'and';\n defaults.operator = optr;\n }\n var value;\n var val;\n var length;\n var fObj;\n var coll = [];\n if (checked.length !== this.itemsCnt || (searchInput && searchInput.value && searchInput.value !== '')) {\n for (var i = 0; i < checked.length; i++) {\n value = this.values[parentsUntil(checked[parseInt(i.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n fObj = extend({}, { value: value }, defaults);\n if (value && !value.toString().length) {\n fObj.operator = isNotEqual ? 'notequal' : 'equal';\n }\n if (value === '' || isNullOrUndefined(value)) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n }\n else {\n coll.push(fObj);\n }\n var args = {\n instance: this, handler: this.fltrBtnHandler, arg1: fObj.field, arg2: fObj.predicate, arg3: fObj.operator,\n arg4: fObj.matchCase, arg5: fObj.ignoreAccent, arg6: fObj.value, cancel: false\n };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime') && check.length) {\n length = check.length - 1;\n val = this.values[parentsUntil(check[parseInt(length.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n if (isNullOrUndefined(val) && isNotEqual) {\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: 'equal',\n predicate: 'and', value: null\n });\n }\n }\n if (this.cBox.querySelector('.e-add-current') && this.cBox.querySelector('.e-add-current').classList.contains('e-check')) {\n var existingPredicate_1 = this.existingPredicate[this.options.field];\n if (existingPredicate_1) {\n var _loop_1 = function (j) {\n if (!coll.some(function (data) {\n return data\n .value === existingPredicate_1[parseInt(j.toString(), 10)].value;\n })) {\n coll.push(existingPredicate_1[parseInt(j.toString(), 10)]);\n }\n };\n for (var j = 0; j < existingPredicate_1.length; j++) {\n _loop_1(j);\n }\n }\n else {\n return;\n }\n }\n this.initiateFilter(coll);\n }\n else {\n var isClearFilter = this.options.filteredColumns.some(function (value) {\n return _this.options.field === value.field;\n });\n if (isClearFilter) {\n this.clearFilter();\n }\n }\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.generateNullValuePredicates = function (defaults) {\n var coll = [];\n if (defaults.type === 'string') {\n coll.push({\n field: defaults.field, ignoreAccent: defaults.ignoreAccent, matchCase: defaults.matchCase,\n operator: defaults.operator, predicate: defaults.predicate, value: ''\n });\n }\n coll.push({\n field: defaults.field,\n matchCase: defaults.matchCase, operator: defaults.operator, predicate: defaults.predicate, value: null\n });\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: defaults.operator,\n predicate: defaults.predicate, value: undefined\n });\n return coll;\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.prototype.initiateFilter = function (fColl) {\n var firstVal = fColl[0];\n var predicate;\n if (!isNullOrUndefined(firstVal)) {\n predicate = firstVal.ejpredicate ? firstVal.ejpredicate :\n new Predicate(firstVal.field, firstVal.operator, firstVal.value, !firstVal.matchCase, firstVal.ignoreAccent);\n for (var j = 1; j < fColl.length; j++) {\n predicate = fColl[parseInt(j.toString(), 10)].ejpredicate !== undefined ?\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].ejpredicate) :\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].field, fColl[parseInt(j.toString(), 10)].operator, fColl[parseInt(j.toString(), 10)].value, !fColl[parseInt(j.toString(), 10)].matchCase, fColl[parseInt(j.toString(), 10)].ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: Predicate.or(predicate)\n };\n this.options.handler(args);\n }\n };\n CheckBoxFilterBase.prototype.isForeignColumn = function (col) {\n return col.isForeignColumn ? col.isForeignColumn() : false;\n };\n CheckBoxFilterBase.prototype.refreshCheckboxes = function () {\n var _this = this;\n var val = this.sInput.value;\n var column = this.options.column;\n var query = this.isForeignColumn(column) ? this.foreignKeyQuery.clone() : this.options.query.clone();\n var foreignQuery = this.options.query.clone();\n var pred = query.queries.filter(function (e) { return e && e.fn === 'onWhere'; })[0];\n query.queries = [];\n foreignQuery.queries = [];\n var parsed = (this.options.type !== 'string' && parseFloat(val)) ? parseFloat(val) : val;\n var operator = this.options.isRemote ?\n (this.options.type === 'string' ? 'contains' : 'equal') : (this.options.type ? 'contains' : 'equal');\n var matchCase = true;\n var ignoreAccent = this.options.ignoreAccent;\n var field = this.isForeignColumn(column) ? column.foreignKeyValue : column.field;\n parsed = (parsed === '' || parsed === undefined) ? undefined : parsed;\n var coll = [];\n var defaults = {\n field: field, predicate: 'or', uid: this.options.uid,\n operator: 'equal', type: this.options.type, matchCase: matchCase, ignoreAccent: ignoreAccent\n };\n var predicte;\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (this.options.type === 'boolean') {\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'false';\n }\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? true : 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? false : 'false';\n }\n operator = 'equal';\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime' || this.options.type === 'dateonly') && this.options.format) {\n var intl = new Internationalization();\n var format = typeof (this.options.format) === 'string' ? this.options.format :\n this.options.format.format;\n if (format) {\n parsed = intl.parseDate(val, { format: format }) || new Date(val);\n }\n else {\n parsed = new Date(val);\n }\n if (this.options.type === 'dateonly') {\n parsed = parsed.getFullYear() + '-' + padZero(parsed.getMonth() + 1) + '-' + padZero(parsed.getDate());\n }\n }\n this.addDistinct(query);\n var args = {\n requestType: events.filterSearchBegin,\n filterModel: this, columnName: field, column: column,\n operator: operator, matchCase: matchCase, ignoreAccent: ignoreAccent, filterChoiceCount: null,\n query: query, value: parsed\n };\n this.parent.trigger(events.actionBegin, args, function (filterargs) {\n // eslint-disable-next-line no-self-assign\n filterargs.operator = filterargs.operator;\n predicte = new Predicate(field, filterargs.operator, args.value, filterargs.matchCase, filterargs.ignoreAccent);\n if (_this.options.type === 'date' || _this.options.type === 'datetime' || _this.options.type === 'dateonly') {\n operator = 'equal';\n var filterObj = {\n field: field, operator: operator, value: parsed, matchCase: matchCase,\n ignoreAccent: ignoreAccent\n };\n if (!isNullOrUndefined(parsed)) {\n predicte = getDatePredicate(filterObj, _this.options.type);\n }\n }\n if (val && typeof val === 'string' && _this.isBlanks &&\n _this.getLocalizedLabel('Blanks').toLowerCase().indexOf(val.toLowerCase()) >= 0) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n var emptyValPredicte = CheckBoxFilterBase.generatePredicate(coll);\n emptyValPredicte.predicates.push(predicte);\n query.where(emptyValPredicte);\n }\n else if (val.length) {\n predicte = !isNullOrUndefined(pred) ? predicte.and(pred.e) : predicte;\n query.where(predicte);\n }\n else if (!isNullOrUndefined(pred)) {\n query.where(pred.e);\n }\n filterargs.filterChoiceCount = !isNullOrUndefined(filterargs.filterChoiceCount) ? filterargs.filterChoiceCount : 1000;\n var fPredicate = {};\n showSpinner(_this.spinner);\n _this.renderEmpty = false;\n if (_this.isForeignColumn(column) && val.length) {\n var colData = ('result' in column.dataSource) ? new DataManager(column.dataSource.result) :\n column.dataSource;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n colData.executeQuery(query).then(function (e) {\n var columnData = _this.options.column.columnData;\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: column });\n if (fPredicate.predicate.predicates.length) {\n foreignQuery.where(fPredicate.predicate);\n }\n else {\n _this.renderEmpty = true;\n }\n _this.options.column.columnData = columnData;\n foreignQuery.take(filterargs.filterChoiceCount);\n _this.search(filterargs, foreignQuery);\n });\n }\n else {\n query.take(filterargs.filterChoiceCount);\n _this.search(filterargs, query);\n }\n });\n };\n CheckBoxFilterBase.prototype.search = function (args, query) {\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.filterEvent(args, query);\n }\n else {\n this.processSearch(query);\n }\n };\n CheckBoxFilterBase.prototype.getPredicateFromCols = function (columns, isExecuteLocal) {\n var predicates = CheckBoxFilterBase.getPredicate(columns, isExecuteLocal);\n var predicateList = [];\n var fPredicate = {};\n var isGrid = this.parent.getForeignKeyColumns !== undefined;\n var foreignColumn = isGrid ? this.parent.getForeignKeyColumns() : [];\n for (var _i = 0, _a = Object.keys(predicates); _i < _a.length; _i++) {\n var prop = _a[_i];\n var col = void 0;\n if (isGrid && !this.parent.getColumnByField(prop)) {\n col = getColumnByForeignKeyValue(prop, foreignColumn);\n }\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(Predicate.or(fPredicate.predicate.predicates));\n }\n }\n else {\n predicateList.push(predicates[\"\" + prop]);\n }\n }\n return predicateList.length && Predicate.and(predicateList);\n };\n CheckBoxFilterBase.prototype.getQuery = function () {\n return this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n };\n CheckBoxFilterBase.prototype.getAllData = function () {\n var _this = this;\n this.customQuery = false;\n var query = this.getQuery();\n query.requiresCount(); //consider take query\n this.addDistinct(query);\n var args = {\n requestType: events.filterChoiceRequest, query: query, filterChoiceCount: null\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.trigger(events.actionBegin, args, function (args) {\n args.filterChoiceCount = !isNullOrUndefined(args.filterChoiceCount) ? args.filterChoiceCount : 1000;\n query.take(args.filterChoiceCount);\n if (!args.query.distincts.length) {\n _this.customQuery = true;\n _this.queryGenerate(query);\n }\n if (_this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.filterEvent(args, query);\n }\n else {\n _this.processDataOperation(query, true);\n }\n });\n };\n CheckBoxFilterBase.prototype.addDistinct = function (query) {\n var filteredColumn = DataUtil.distinct(this.options.filteredColumns, 'field');\n if (filteredColumn.indexOf(this.options.column.field) <= -1) {\n filteredColumn = filteredColumn.concat(this.options.column.field);\n }\n query.distinct(filteredColumn);\n return query;\n };\n CheckBoxFilterBase.prototype.filterEvent = function (args, query) {\n var _this = this;\n var defObj = eventPromise(args, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n _this.dataSuccess(e);\n });\n };\n CheckBoxFilterBase.prototype.processDataOperation = function (query, isInitial) {\n var _this = this;\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n var allPromise = [];\n var runArray = [];\n if (this.isForeignColumn(this.options.column) && isInitial) {\n var colData = ('result' in this.options.column.dataSource) ?\n new DataManager(this.options.column.dataSource.result) :\n this.options.column.dataSource;\n this.foreignKeyQuery.params = query.params;\n allPromise.push(colData.executeQuery(this.foreignKeyQuery));\n runArray.push(function (data) { return _this.foreignKeyData = data; });\n }\n allPromise.push(this.options.dataSource.executeQuery(query));\n runArray.push(this.dataSuccess.bind(this));\n var i = 0;\n Promise.all(allPromise).then(function (e) {\n for (var j = 0; j < e.length; j++) {\n runArray[i++](e[parseInt(j.toString(), 10)].result);\n }\n });\n };\n CheckBoxFilterBase.prototype.dataSuccess = function (e) {\n this.fullData = e;\n var args1 = { dataSource: this.fullData, executeQuery: true, field: this.options.field };\n this.parent.notify(events.beforeCheckboxRenderer, args1);\n if (args1.executeQuery) {\n var query = new Query();\n if (!this.customQuery) {\n this.isExecuteLocal = true;\n this.queryGenerate(query);\n this.isExecuteLocal = false;\n }\n // query.select(this.options.field);\n var result = new DataManager(args1.dataSource).executeLocal(query);\n var col = this.options.column;\n this.filteredData = CheckBoxFilterBase.getDistinct(result, this.options.field, col, this.foreignKeyData, this).records || [];\n }\n var data = args1.executeQuery ? this.filteredData : args1.dataSource;\n this.processDataSource(null, true, data, args1);\n if (this.sInput) {\n this.sInput.focus();\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: this.options.field, columnType: this.options.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n if (this.isCheckboxFilterTemplate) {\n hideSpinner(this.spinner);\n }\n };\n CheckBoxFilterBase.prototype.queryGenerate = function (query) {\n if (this.parent.searchSettings && this.parent.searchSettings.key.length) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.options.columns.map(function (f) { return f.field; });\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n if ((this.options.filteredColumns.length)) {\n var cols = [];\n for (var i = 0; i < this.options.filteredColumns.length; i++) {\n var filterColumn = this.options.filteredColumns[parseInt(i.toString(), 10)];\n if (this.options.uid) {\n filterColumn.uid = filterColumn.uid || this.parent.getColumnByField(filterColumn.field).uid;\n if (filterColumn.uid !== this.options.uid) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n else {\n if (filterColumn.field !== this.options.field) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n }\n var predicate = this.getPredicateFromCols(cols, this.isExecuteLocal);\n if (predicate) {\n query.where(predicate);\n }\n }\n };\n CheckBoxFilterBase.prototype.processDataSource = function (query, isInitial, dataSource, args) {\n showSpinner(this.spinner);\n // query = query ? query : this.options.query.clone();\n // query.requiresCount();\n // let result: Object = new DataManager(dataSource as JSON[]).executeLocal(query);\n // let res: { result: Object[] } = result as { result: Object[] };\n this.isExecuteLocal = true;\n this.updateResult();\n this.isExecuteLocal = false;\n var args1 = { dataSource: this.fullData, isCheckboxFilterTemplate: false, column: this.options.column,\n element: this.cBox, type: this.options.type, format: this.options.type, btnObj: this.options.isResponsiveFilter ? null :\n this.dialogObj.btnObj[0], searchBox: this.searchBox };\n this.parent.notify(events.beforeCheckboxfilterRenderer, args1);\n this.isCheckboxFilterTemplate = args1.isCheckboxFilterTemplate;\n if (!this.isCheckboxFilterTemplate) {\n this.createFilterItems(dataSource, isInitial, args);\n }\n };\n CheckBoxFilterBase.prototype.processSearch = function (query) {\n this.processDataOperation(query);\n };\n CheckBoxFilterBase.prototype.updateResult = function () {\n this.result = {};\n var predicate = this.getPredicateFromCols(this.options.filteredColumns, this.isExecuteLocal);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n this.parent.notify(events.beforeCheckboxRendererQuery, { query: query });\n var result = new DataManager(this.fullData).executeLocal(query);\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n this.result[getObject(this.options.field, res)] = true;\n }\n };\n CheckBoxFilterBase.prototype.clickHandler = function (e) {\n var target = e.target;\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && parentsUntil(target, 'e-mask-ftrchk')) {\n return;\n }\n var elem = parentsUntil(target, 'e-checkbox-wrapper');\n if (parentsUntil(target, 'e-searchbox')) {\n this.searchBoxClick(e);\n }\n if (elem && !this.isCheckboxFilterTemplate) {\n var selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateAllCBoxes(!selectAll.classList.contains('e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n }\n this.updateIndeterminatenBtn();\n elem.querySelector('.e-chk-hidden').focus();\n }\n this.setFocus(parentsUntil(elem, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.keyupHandler = function (e) {\n this.setFocus(parentsUntil(e.target, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.setFocus = function (elem) {\n var prevElem = this.dlg.querySelector('.e-chkfocus');\n if (prevElem) {\n prevElem.classList.remove('e-chkfocus');\n }\n if (elem) {\n elem.classList.add('e-chkfocus');\n }\n };\n CheckBoxFilterBase.prototype.updateAllCBoxes = function (checked) {\n var cBoxes = [].slice.call(this.cBox.querySelectorAll('.e-frame:not(.e-add-current)'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n setChecked(cBox.previousSibling, checked);\n }\n };\n CheckBoxFilterBase.prototype.dialogOpen = function () {\n if (this.parent.element.classList.contains('e-device')) {\n this.dialogObj.element.querySelector('.e-input-group').classList.remove('e-input-focus');\n if (!this.options.isResponsiveFilter) {\n this.dialogObj.element.querySelector('.e-btn').focus();\n }\n }\n };\n CheckBoxFilterBase.prototype.createCheckbox = function (value, checked, data) {\n var elem = checked ? this.cBoxTrue.cloneNode(true) :\n this.cBoxFalse.cloneNode(true);\n setChecked(elem.querySelector('input'), checked);\n var label = elem.querySelector('.e-label');\n var dummyData = extendObjWithFn({}, data, { column: this.options.column, parent: this.parent });\n var innerText = this.options.disableHtmlEncode ? 'textContent' : 'innerHTML';\n label[\"\" + innerText] = !isNullOrUndefined(value) && value.toString().length ?\n this.parent.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value : this.getLocalizedLabel('Blanks');\n if (label.innerHTML === this.getLocalizedLabel('Blanks')) {\n this.isBlanks = true;\n }\n if (typeof value === 'boolean') {\n label.innerHTML = value === true ? this.getLocalizedLabel('FilterTrue') : this.getLocalizedLabel('FilterFalse');\n }\n addClass([label], ['e-checkboxfiltertext']);\n if (this.options.template && data[this.options.column.field] !== this.getLocalizedLabel('SelectAll')\n && data[this.options.column.field] !== this.getLocalizedLabel('AddCurrentSelection')) {\n label.innerHTML = '';\n var isReactCompiler = this.parent.isReact && this.options.column.filter\n && typeof (this.options.column.filter.itemTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n this.options.template(dummyData, this.parent, 'filterItemTemplate', null, null, null, label);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(label, this.options.template(dummyData, this.parent, 'filterItemTemplate'));\n }\n }\n return elem;\n };\n CheckBoxFilterBase.prototype.updateIndeterminatenBtn = function () {\n var cnt = this.cBox.children.length - 1;\n var className = [];\n var disabled = false;\n var elem = this.cBox.querySelector('.e-selectall');\n var selected = this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)').length;\n if (this.cBox.querySelector('.e-add-current')) {\n cnt -= 1;\n }\n var btn;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n btn.disabled = false;\n }\n var input = elem.previousSibling;\n setChecked(input, false);\n input.indeterminate = false;\n if (cnt === selected) {\n className = ['e-check'];\n setChecked(input, true);\n }\n else if (selected) {\n className = ['e-stop'];\n input.indeterminate = true;\n }\n else {\n className = ['e-uncheck'];\n disabled = true;\n if (btn) {\n btn.disabled = true;\n }\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n };\n CheckBoxFilterBase.prototype.createFilterItems = function (data, isInitial, args1) {\n var _a, _b;\n var cBoxes = this.parent.createElement('div');\n var btn;\n var disabled = false;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n }\n var nullCounter = -1;\n var key = 'ejValue';\n if (!args1.executeQuery) {\n key = args1.field;\n }\n for (var i = 0; i < data.length; i++) {\n var val = getValue(key, data[parseInt(i.toString(), 10)]);\n if (val === '' || isNullOrUndefined(val)) {\n nullCounter = nullCounter + 1;\n }\n }\n this.itemsCnt = nullCounter !== -1 ? data.length - nullCounter : data.length;\n if (data.length && !this.renderEmpty) {\n var selectAllValue = this.getLocalizedLabel('SelectAll');\n var innerDiv = this.cBox.querySelector('.e-checkfltrnmdiv');\n if (innerDiv) {\n innerDiv.classList.remove('e-checkfltrnmdiv');\n }\n var checkBox = this.createCheckbox(selectAllValue, false, (_a = {}, _a[this.options.field] = selectAllValue, _a));\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([checkBox], this.parent.cssClass.split(' '));\n }\n else {\n addClass([checkBox], [this.parent.cssClass]);\n }\n }\n var selectAll = createCboxWithWrap(getUid('cbox'), checkBox, 'e-ftrchk');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n cBoxes.appendChild(selectAll);\n var predicate = new Predicate('field', 'equal', this.options.field);\n if (this.options.foreignKeyValue) {\n predicate = predicate.or('field', 'equal', this.options.foreignKeyValue);\n }\n var isColFiltered = new DataManager(this.options.filteredColumns).executeLocal(new Query().where(predicate)).length;\n if (this.sInput.value) {\n var predicateCheckBox = this.createCheckbox(this.getLocalizedLabel('AddCurrentSelection'), false, (_b = {},\n _b[this.options.field] = this.getLocalizedLabel('AddCurrentSelection'),\n _b));\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([predicateCheckBox], this.parent.cssClass.split(' '));\n }\n else {\n addClass([predicateCheckBox], [this.parent.cssClass]);\n }\n }\n var predicateElement = createCboxWithWrap(getUid('cbox'), predicateCheckBox, 'e-ftrchk');\n predicateElement.querySelector('.e-frame').classList.add('e-add-current');\n cBoxes.appendChild(predicateElement);\n }\n var isRndere = void 0;\n for (var i = 0; i < data.length; i++) {\n var uid = getUid('cbox');\n this.values[\"\" + uid] = getValue(key, data[parseInt(i.toString(), 10)]);\n var value = getValue(this.options.field, data[parseInt(i.toString(), 10)]);\n if (this.options.formatFn) {\n value = this.valueFormatter.toView(value, this.options.formatFn);\n }\n var args_1 = { value: value, column: this.options.column, data: data[parseInt(i.toString(), 10)] };\n this.parent.notify(events.filterCboxValue, args_1);\n value = args_1.value;\n if ((value === '' || isNullOrUndefined(value))) {\n if (isRndere) {\n continue;\n }\n isRndere = true;\n }\n var checkbox = this.createCheckbox(value, this.getCheckedState(isColFiltered, this.values[\"\" + uid]), getValue('dataObj', data[parseInt(i.toString(), 10)]));\n cBoxes.appendChild(createCboxWithWrap(uid, checkbox, 'e-ftrchk'));\n }\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n this.updateIndeterminatenBtn();\n if (btn) {\n btn.disabled = false;\n }\n disabled = false;\n }\n else {\n cBoxes.appendChild(this.parent.createElement('span', { innerHTML: this.getLocalizedLabel('NoResult') }));\n this.cBox.innerHTML = '';\n this.cBox.appendChild(this.parent.createElement('div', { className: 'e-checkfltrnmdiv' }));\n appendChildren(this.cBox.children[0], [].slice.call(cBoxes.children));\n if (btn) {\n btn.disabled = true;\n }\n disabled = true;\n }\n if (btn && data.length) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n var args = { requestType: events.filterChoiceRequest, dataSource: this.renderEmpty ? [] : data };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n hideSpinner(this.spinner);\n };\n CheckBoxFilterBase.prototype.getCheckedState = function (isColFiltered, value) {\n if (!this.isFiltered || !isColFiltered) {\n return true;\n }\n else {\n var checkState = this.sInput.value ? true : this.result[\"\" + value];\n return this.options.operator === 'notequal' ? !checkState : checkState;\n }\n };\n CheckBoxFilterBase.getDistinct = function (json, field, column, foreignKeyData, checkboxFilter) {\n var len = json.length;\n var result = [];\n var value;\n var ejValue = 'ejValue';\n var lookup = {};\n var isForeignKey = column && column.isForeignColumn ? column.isForeignColumn() : false;\n while (len--) {\n value = json[parseInt(len.toString(), 10)];\n value = getObject(field, value); //local remote diff, check with mdu\n var currentFilterValue = (typeof value === 'string') && !(isNullOrUndefined(checkboxFilter)) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !(isNullOrUndefined(checkboxFilter.parent)) && !(isNullOrUndefined(checkboxFilter.parent.filterSettings)) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !(isNullOrUndefined(checkboxFilter.parent.filterSettings.enableCaseSensitivity)) ? value.toLowerCase() : value;\n if (!(currentFilterValue in lookup)) {\n var obj = {};\n obj[\"\" + ejValue] = value;\n lookup[\"\" + currentFilterValue] = true;\n if (isForeignKey) {\n var foreignDataObj = getForeignData(column, {}, value, foreignKeyData)[0];\n setValue(events.foreignKeyData, foreignDataObj, json[parseInt(len.toString(), 10)]);\n value = getValue(column.foreignKeyValue, foreignDataObj);\n }\n setValue(field, isNullOrUndefined(value) ? null : value, obj);\n setValue('dataObj', json[parseInt(len.toString(), 10)], obj);\n result.push(obj);\n }\n }\n return DataUtil.group(DataUtil.sort(result, field, DataUtil.fnAscending), 'ejValue');\n };\n CheckBoxFilterBase.getPredicate = function (columns, isExecuteLocal) {\n var cols = DataUtil.distinct(columns, 'field', true) || [];\n var collection = [];\n var pred = {};\n for (var i = 0; i < cols.length; i++) {\n collection = new DataManager(columns).executeLocal(new Query().where('field', 'equal', cols[parseInt(i.toString(), 10)].field));\n if (collection.length !== 0) {\n pred[cols[parseInt(i.toString(), 10)].field] = CheckBoxFilterBase.generatePredicate(collection, isExecuteLocal);\n }\n }\n return pred;\n };\n CheckBoxFilterBase.generatePredicate = function (cols, isExecuteLocal) {\n var len = cols ? cols.length : 0;\n var predicate;\n var operate = 'or';\n var first = CheckBoxFilterBase.updateDateFilter(cols[0]);\n first.ignoreAccent = !isNullOrUndefined(first.ignoreAccent) ? first.ignoreAccent : false;\n if (first.type === 'date' || first.type === 'datetime' || first.type === 'dateonly') {\n predicate = getDatePredicate(first, first.type, isExecuteLocal);\n }\n else {\n predicate = first.ejpredicate ? first.ejpredicate :\n new Predicate(first.field, first.operator, first.value, !CheckBoxFilterBase.getCaseValue(first), first.ignoreAccent);\n }\n for (var p = 1; p < len; p++) {\n cols[parseInt(p.toString(), 10)] = CheckBoxFilterBase.updateDateFilter(cols[parseInt(p.toString(), 10)]);\n if (len > 2 && p > 1 && cols[parseInt(p.toString(), 10)].predicate === 'or') {\n if (cols[parseInt(p.toString(), 10)].type === 'date' || cols[parseInt(p.toString(), 10)].type === 'datetime' || cols[parseInt(p.toString(), 10)].type === 'dateonly') {\n predicate.predicates.push(getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal));\n }\n else {\n predicate.predicates.push(new Predicate(cols[parseInt(p.toString(), 10)].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent));\n }\n }\n else {\n if (cols[parseInt(p.toString(), 10)].type === 'date' || cols[parseInt(p.toString(), 10)].type === 'datetime' || cols[parseInt(p.toString(), 10)].type === 'dateonly') {\n if (cols[parseInt(p.toString(), 10)].predicate === 'and' && cols[parseInt(p.toString(), 10)].operator === 'equal') {\n predicate = predicate[\"\" + operate](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n else {\n predicate = predicate[(cols[parseInt(p.toString(), 10)].predicate)](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n else {\n predicate = cols[parseInt(p.toString(), 10)].ejpredicate ?\n predicate[cols[parseInt(p.toString(), 10)]\n .predicate](cols[parseInt(p.toString(), 10)].ejpredicate) :\n predicate[(cols[parseInt(p.toString(), 10)].predicate)](cols[parseInt(p.toString(), 10)].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n }\n return predicate || null;\n };\n CheckBoxFilterBase.getCaseValue = function (filter) {\n if (isNullOrUndefined(filter.matchCase)) {\n if (filter.type === 'string' || isNullOrUndefined(filter.type) && typeof (filter.value) === 'string') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return filter.matchCase;\n }\n };\n CheckBoxFilterBase.updateDateFilter = function (filter) {\n if ((filter.type === 'date' || filter.type === 'datetime' || filter.type === 'dateonly' || filter.value instanceof Date)) {\n filter.type = filter.type || 'date';\n }\n return filter;\n };\n return CheckBoxFilterBase;\n}());\nexport { CheckBoxFilterBase };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Cell\n *\n * @hidden\n */\nvar Cell = /** @class */ (function () {\n function Cell(options) {\n this.isSpanned = false;\n this.isRowSpanned = false;\n merge(this, options);\n }\n Cell.prototype.clone = function () {\n var cell = new Cell({});\n merge(cell, this);\n return cell;\n };\n return Cell;\n}());\nexport { Cell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, isNullOrUndefined, extend, Property } from '@syncfusion/ej2-base';\nimport { Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getUid, templateCompiler, getForeignData, getObject } from '../base/util';\n/**\n * Represents Grid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options, parent) {\n var _this = this;\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowGrouping` set to false, then it disables grouping of a particular column.\n * By default all columns are groupable.\n *\n * @default true\n */\n this.allowGrouping = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `enableGroupByFormat` set to true, then it groups the particular column by formatted values.\n *\n * @default true\n */\n this.enableGroupByFormat = false;\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu or checkbox.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n * {% codeBlock src=\"grid/filter-menu-api/index.ts\" %}{% endcodeBlock %}\n *\n * > Check the [`Filter UI`](../../grid/filtering/filter-menu/#custom-component-in-filter-menu) for its customization.\n *\n * @default {}\n */\n this.filter = {};\n /**\n * If `showInColumnChooser` set to false, then hide the particular column in column chooser.\n * By default all columns are displayed in column Chooser.\n *\n * @default true\n */\n this.showInColumnChooser = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `allowSearching` set to false, then it disables Searching of a particular column.\n * By default all columns allow Searching.\n *\n * @default true\n */\n this.allowSearching = true;\n /**\n * If `autoFit` set to true, then the particular column content width will be\n * adjusted based on its content in the initial rendering itself.\n * Setting this property as true is equivalent to calling `autoFitColumns` method in the `dataBound` event.\n *\n * @default false\n */\n this.autoFit = false;\n this.sortDirection = 'Descending';\n /**\n * @returns {Function} returns the edit template\n * @hidden */\n this.getEditTemplate = function () { return _this.editTemplateFn; };\n /**\n * @returns {Function} returns the filter template\n * @hidden */\n this.getFilterTemplate = function () { return _this.filterTemplateFn; };\n merge(this, options);\n this.parent = parent;\n if (this.type === 'none') {\n this.type = null;\n }\n else if (this.type) {\n this.type = typeof (this.type) === 'string' ? this.type.toLowerCase() : undefined;\n }\n if (this.editType) {\n this.editType = this.editType.toLowerCase();\n }\n if (isNullOrUndefined(this.uid)) {\n this.uid = getUid('grid-column');\n }\n var valueFormatter = new ValueFormatter();\n if (options.format && (options.format.skeleton || (options.format.format &&\n typeof options.format.format === 'string'))) {\n this.setFormatter(valueFormatter.getFormatFunction(extend({}, options.format)));\n this.setParser(valueFormatter.getParserFunction(options.format));\n }\n this.toJSON = function () {\n var col = {};\n var skip = ['filter', 'dataSource', 'headerText', 'template', 'headerTemplate', 'edit',\n 'editTemplate', 'filterTemplate', 'commandsTemplate', 'parent'];\n var keys = Object.keys(_this);\n for (var i = 0; i < keys.length; i++) {\n if (keys[parseInt(i.toString(), 10)] === 'columns') {\n col[keys[parseInt(i.toString(), 10)]] = [];\n for (var j = 0; j < _this[keys[parseInt(i.toString(), 10)]].length; j++) {\n col[keys[parseInt(i.toString(), 10)]].push(_this[keys[parseInt(i.toString(), 10)]][parseInt(j.toString(), 10)].toJSON());\n }\n }\n else if (skip.indexOf(keys[parseInt(i.toString(), 10)]) < 0) {\n col[keys[parseInt(i.toString(), 10)]] = _this[keys[parseInt(i.toString(), 10)]];\n }\n }\n return col;\n };\n if (!this.field) {\n this.allowFiltering = false;\n this.allowGrouping = false;\n this.allowSorting = false;\n if (this.columns) {\n this.allowResizing = this.columns.some(function (col) {\n return col.allowResizing;\n });\n }\n }\n if (this.commands && !this.textAlign) {\n this.textAlign = 'Right';\n }\n if (this.template || this.commandsTemplate) {\n this.templateFn = templateCompiler(this.template || this.commandsTemplate);\n }\n if (this.headerTemplate) {\n this.headerTemplateFn = templateCompiler(this.headerTemplate);\n }\n if (!isNullOrUndefined(this.filter) && this.filter.itemTemplate) {\n this.fltrTemplateFn = templateCompiler(this.filter.itemTemplate);\n }\n if (this.editTemplate) {\n this.editTemplateFn = templateCompiler(this.editTemplate);\n }\n if (this.filterTemplate) {\n this.filterTemplateFn = templateCompiler(this.filterTemplate);\n }\n if (this.isForeignColumn() &&\n (isNullOrUndefined(this.editType) || this.editType === 'dropdownedit' || this.editType === 'defaultedit')) {\n this.editType = 'dropdownedit';\n if (this.edit.params && this.edit.params.dataSource) {\n this.edit.params.ddEditedData = true;\n }\n this.edit.params = extend({\n dataSource: this.dataSource,\n query: new Query(), fields: { value: this.foreignKeyField || this.field, text: this.foreignKeyValue }\n }, this.edit.params);\n }\n if (this.sortComparer) {\n var a_1 = this.sortComparer;\n this.sortComparer = function (x, y, xObj, yObj) {\n if (typeof a_1 === 'string') {\n a_1 = getObject(a_1, window);\n }\n if (_this.sortDirection === 'Descending') {\n var z = x;\n x = y;\n y = z;\n var obj = xObj;\n xObj = yObj;\n yObj = obj;\n }\n return a_1(x, y, xObj, yObj);\n };\n }\n if (!this.sortComparer && this.isForeignColumn()) {\n this.sortComparer = function (x, y) {\n x = getObject(_this.foreignKeyValue, getForeignData(_this, {}, x)[0]);\n y = getObject(_this.foreignKeyValue, getForeignData(_this, {}, y)[0]);\n return _this.sortDirection === 'Descending' ? DataUtil.fnDescending(x, y) : DataUtil.fnAscending(x, y);\n };\n }\n }\n /**\n * @returns {string} returns the sort direction\n * @hidden */\n Column.prototype.getSortDirection = function () {\n return this.sortDirection;\n };\n /**\n * @param {string} direction - specifies the direction\n * @returns {void}\n * @hidden\n */\n Column.prototype.setSortDirection = function (direction) {\n this.sortDirection = direction;\n };\n /**\n * @returns {freezeTable} returns the FreezeTable\n * @hidden */\n Column.prototype.getFreezeTableName = function () {\n return this.freezeTable;\n };\n /**\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[parseInt(i.toString(), 10)]] = column[keys[parseInt(i.toString(), 10)]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent.isReact) {\n if (keys[parseInt(i.toString(), 10)] === 'template') {\n this.templateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactColumnTemplateByUid(this.uid, true);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'headerTemplate') {\n this.headerTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactHeaderTemplateByUid(this.uid);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'editTemplate') {\n this.editTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n }\n }\n }\n };\n /**\n * @returns {boolean} returns true for foreign column\n * @hidden\n * It defines the column is foreign key column or not.\n */\n Column.prototype.isForeignColumn = function () {\n return !!(this.dataSource && this.foreignKeyValue);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Column.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getParser = function () {\n return this.parserFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setParser = function (value) {\n this.parserFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getColumnTemplate = function () {\n return this.templateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getFilterItemTemplate = function () {\n return this.fltrTemplateFn;\n };\n /**\n * @returns {string} returns the string\n * @hidden */\n Column.prototype.getDomSetter = function () {\n return this.disableHtmlEncode ? 'textContent' : 'innerHTML';\n };\n return Column;\n}());\nexport { Column };\n/**\n * Define options for custom command buttons.\n */\nvar CommandColumnModel = /** @class */ (function () {\n function CommandColumnModel() {\n }\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"buttonOption\", void 0);\n return CommandColumnModel;\n}());\nexport { CommandColumnModel };\n/**\n * Defines Grid column\n */\nvar GridColumn = /** @class */ (function (_super) {\n __extends(GridColumn, _super);\n function GridColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], GridColumn.prototype, \"columns\", void 0);\n return GridColumn;\n}(Column));\nexport { GridColumn };\n/**\n * Defines stacked grid column\n */\nvar StackedColumn = /** @class */ (function (_super) {\n __extends(StackedColumn, _super);\n function StackedColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StackedColumn;\n}(GridColumn));\nexport { StackedColumn };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Row\n *\n * @hidden\n */\nvar Row = /** @class */ (function () {\n function Row(options, parent) {\n merge(this, options);\n this.parent = parent;\n }\n Row.prototype.clone = function () {\n var row = new Row({});\n merge(row, this);\n row.cells = this.cells.map(function (cell) { return cell.clone(); });\n return row;\n };\n /**\n * Replaces the row data and grid refresh the particular row element only.\n *\n * @param {Object} data - To update new data for the particular row.\n * @returns {void}\n */\n Row.prototype.setRowValue = function (data) {\n if (!this.parent) {\n return;\n }\n var key = this.data[this.parent.getPrimaryKeyFieldNames()[0]];\n this.parent.setRowData(key, data);\n };\n /**\n * Replaces the given field value and refresh the particular cell element only.\n *\n * @param {string} field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n Row.prototype.setCellValue = function (field, value) {\n if (!this.parent) {\n return;\n }\n var isValDiff = !(this.data[\"\" + field].toString() === value.toString());\n if (isValDiff) {\n var pKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var key = this.data[\"\" + pKeyField];\n this.parent.setCellValue(key, field, value);\n this.makechanges(pKeyField, this.data);\n }\n else {\n return;\n }\n };\n Row.prototype.makechanges = function (key, data) {\n if (!this.parent) {\n return;\n }\n var gObj = this.parent;\n var dataManager = gObj.getDataModule().dataManager;\n dataManager.update(key, data);\n };\n return Row;\n}());\nexport { Row };\n","import { isNullOrUndefined, attributes } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * `CellMergeRender` module.\n *\n * @hidden\n */\nvar CellMergeRender = /** @class */ (function () {\n function CellMergeRender(serviceLocator, parent) {\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n }\n CellMergeRender.prototype.render = function (cellArgs, row, i, td) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var colSpan = row.cells[parseInt(i.toString(), 10)].cellSpan ? row.cells[parseInt(i.toString(), 10)].cellSpan :\n (cellArgs.colSpan + i) <= row.cells.length ? cellArgs.colSpan : row.cells.length - i;\n var rowSpan = cellArgs.rowSpan;\n var visible = 0;\n var spannedCell;\n if (row.index > 0) {\n var rowsObject = this.parent.isFrozenGrid() ?\n this.parent.contentModule.tempFreezeRows : this.parent.getRowsObject();\n var cells = this.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var targetCell_1 = row.cells[parseInt(i.toString(), 10)];\n var uid_1 = 'uid';\n spannedCell = cells.filter(function (cell) { return cell.column.uid === targetCell_1.column[\"\" + uid_1]; })[0];\n }\n var colSpanLen = spannedCell && spannedCell.colSpanRange > 1 && spannedCell.rowSpanRange > 1 ?\n spannedCell.colSpanRange : colSpan;\n for (var j = i + 1; j < i + colSpanLen && j < row.cells.length; j++) {\n if (row.cells[parseInt(j.toString(), 10)].visible === false) {\n visible++;\n }\n else {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n }\n if (visible > 0) {\n for (var j = i + colSpan; j < i + colSpan + visible && j < row.cells.length; j++) {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n if (i + colSpan + visible >= row.cells.length) {\n colSpan -= (i + colSpan + visible) - row.cells.length;\n }\n }\n if (row.cells[parseInt(i.toString(), 10)].cellSpan) {\n row.data[cellArgs.column.field] = row.cells[parseInt(i.toString(), 10)].spanText;\n td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' });\n }\n if (colSpan > 1) {\n attributes(td, { 'colSpan': colSpan.toString(), 'aria-colSpan': colSpan.toString() });\n }\n if (rowSpan > 1) {\n attributes(td, { 'rowspan': rowSpan.toString(), 'aria-rowspan': rowSpan.toString() });\n row.cells[parseInt(i.toString(), 10)].isRowSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(rowSpan);\n if (colSpan > 1) {\n row.cells[parseInt(i.toString(), 10)].colSpanRange = Number(colSpan);\n }\n }\n if (row.index > 0 && (spannedCell.rowSpanRange > 1)) {\n row.cells[parseInt(i.toString(), 10)].isSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(spannedCell.rowSpanRange - 1);\n row.cells[parseInt(i.toString(), 10)].colSpanRange = spannedCell.rowSpanRange > 0 ? spannedCell.colSpanRange : 1;\n }\n if (this.parent.enableColumnVirtualization && !row.cells[parseInt(i.toString(), 10)].cellSpan &&\n !this.containsKey(cellArgs.column.field, cellArgs.data[cellArgs.column.field])) {\n this.backupMergeCells(cellArgs.column.field, cellArgs.data[cellArgs.column.field], cellArgs.colSpan);\n }\n return td;\n };\n CellMergeRender.prototype.backupMergeCells = function (fName, data, span) {\n this.setMergeCells(this.generteKey(fName, data), span);\n };\n CellMergeRender.prototype.generteKey = function (fname, data) {\n return fname + '__' + data.toString();\n };\n CellMergeRender.prototype.splitKey = function (key) {\n return key.split('__');\n };\n CellMergeRender.prototype.containsKey = function (fname, data) {\n // eslint-disable-next-line no-prototype-builtins\n return this.getMergeCells().hasOwnProperty(this.generteKey(fname, data));\n };\n CellMergeRender.prototype.getMergeCells = function () {\n return this.parent.mergeCells;\n };\n CellMergeRender.prototype.setMergeCells = function (key, span) {\n this.parent.mergeCells[\"\" + key] = span;\n };\n CellMergeRender.prototype.updateVirtualCells = function (rows) {\n var mCells = this.getMergeCells();\n for (var _i = 0, _a = Object.keys(mCells); _i < _a.length; _i++) {\n var key = _a[_i];\n var value = mCells[\"\" + key];\n var merge = this.splitKey(key);\n var columnIndex = this.getIndexFromAllColumns(merge[0]);\n var vColumnIndices = this.parent.getColumnIndexesInView();\n var span = value - (vColumnIndices[0] - columnIndex);\n if (columnIndex < vColumnIndices[0] && span > 1) {\n for (var _b = 0, rows_1 = rows; _b < rows_1.length; _b++) {\n var row = rows_1[_b];\n if (row.data[merge[0]].toString() === merge[1].toString()) {\n row.cells[0].cellSpan = span;\n row.cells[0].spanText = merge[1];\n break;\n }\n }\n }\n }\n return rows;\n };\n CellMergeRender.prototype.getIndexFromAllColumns = function (field) {\n var index = iterateArrayOrObject(this.parent.getVisibleColumns(), function (item, index) {\n if (item.field === field) {\n return index;\n }\n return undefined;\n })[0];\n return index;\n };\n return CellMergeRender;\n}());\nexport { CellMergeRender };\n","import { remove, addClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { doesImplementInterface, setStyleAndAttributes, appendChildren, extendObjWithFn } from '../base/util';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { foreignKeyData } from '../base/constant';\nimport { CellType } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * CellRenderer class which responsible for building cell content.\n *\n * @hidden\n */\nvar CellRenderer = /** @class */ (function () {\n function CellRenderer(parent, locator) {\n this.localizer = locator.getService('localization');\n this.formatter = locator.getService('valueFormatter');\n this.parent = parent;\n this.element = this.parent.createElement('TD', { className: literals.rowCell, attrs: { tabindex: '-1' } });\n this.rowChkBox = this.parent.createElement('input', { className: 'e-checkselect', attrs: { 'type': 'checkbox',\n 'aria-label': this.localizer.getConstant('CheckBoxLabel') } });\n }\n /**\n * Function to return the wrapper for the TD content\n *\n * @returns {string | Element} returns the string\n */\n CellRenderer.prototype.getGui = function () {\n return '';\n };\n /**\n * Function to format the cell value.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {string} returns the format\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.format = function (column, value, data) {\n if (!isNullOrUndefined(column.format)) {\n if (column.type === 'number' && isNaN(parseInt(value, 10))) {\n value = null;\n }\n value = this.formatter.toView(value, column.getFormatter());\n }\n return isNullOrUndefined(value) ? '' : value.toString();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.evaluate = function (node, cell, data, attributes, fData, isEdit) {\n var _a;\n var result;\n if (cell.column.template) {\n var isReactCompiler = this.parent.isReact && typeof (cell.column.template) !== 'string' && cell.column.template.prototype && !(cell.column.template.prototype).CSPTemplate;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var literals_1 = ['index'];\n var dummyData = extendObjWithFn({}, data, (_a = {}, _a[foreignKeyData] = fData, _a.column = cell.column, _a));\n var templateID = this.parent.element.id + cell.column.uid;\n var str = 'isStringTemplate';\n if (isReactCompiler || isReactChild) {\n var copied = { 'index': attributes[literals_1[0]] };\n cell.column.getColumnTemplate()(extend(copied, dummyData), this.parent, 'columnTemplate', templateID, this.parent[\"\" + str], null, node);\n }\n else {\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals_1[0]] }, dummyData), this.parent, 'template', templateID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n }\n this.parent.notify('template-result', { template: result });\n result = null;\n node.setAttribute('aria-label', node.innerText + this.localizer.getConstant('TemplateCell') +\n this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n return false;\n }\n return true;\n };\n /**\n * Function to invoke the custom formatter available in the column object.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {Object} returns the object\n */\n CellRenderer.prototype.invokeFormatter = function (column, value, data) {\n if (!isNullOrUndefined(column.formatter)) {\n if (doesImplementInterface(column.formatter, 'getValue')) {\n var formatter = column.formatter;\n value = new formatter().getValue(column, data);\n }\n else if (typeof column.formatter === 'function') {\n value = column.formatter(column, data);\n }\n else {\n value = column.formatter.getValue(column, data);\n }\n }\n return value;\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isExpand - specifies the boolean for expand\n * @param {boolean} isEdit - specifies the boolean for edit\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.render = function (cell, data, attributes, isExpand, isEdit) {\n return this.refreshCell(cell, data, attributes, isEdit);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Element} td - specifies the element\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attribute\n * @returns {void}\n */\n CellRenderer.prototype.refreshTD = function (td, cell, data, attributes) {\n var isEdit = this.parent.editSettings.mode === 'Batch' && td.classList.contains('e-editedbatchcell');\n if (this.parent.isReact) {\n var cellIndex = td.cellIndex;\n var parentRow = td.parentElement;\n remove(td);\n var newTD = this.refreshCell(cell, data, attributes, isEdit);\n this.cloneAttributes(newTD, td);\n if (parentRow.cells.length !== cellIndex - 1) {\n parentRow.insertBefore(newTD, parentRow.cells[parseInt(cellIndex.toString(), 10)]);\n }\n else {\n parentRow.appendChild(newTD);\n }\n }\n else {\n var node = this.refreshCell(cell, data, attributes, isEdit);\n td.innerHTML = '';\n td.setAttribute('aria-label', node.getAttribute('aria-label'));\n var elements = [].slice.call(node.childNodes);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n td.appendChild(elem);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CellRenderer.prototype.cloneAttributes = function (target, source) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attrs = source.attributes;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var i = attrs.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attr;\n while (i--) {\n attr = attrs[parseInt(i.toString(), 10)];\n target.setAttribute(attr.name, attr.value);\n }\n };\n CellRenderer.prototype.refreshCell = function (cell, data, attributes, isEdit) {\n var _a;\n var node = this.element.cloneNode();\n var column = cell.column;\n var fData;\n if (cell.isForeignKey) {\n fData = cell.foreignKeyData[0] || (_a = {}, _a[column.foreignKeyValue] = column.format ? null : '', _a);\n }\n //Prepare innerHtml\n var innerHtml = this.getGui();\n var value = cell.isForeignKey ? this.getValue(column.foreignKeyValue, fData, column) :\n this.getValue(column.field, data, column);\n if ((column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') && !isNullOrUndefined(value)) {\n value = new Date(value);\n }\n value = this.format(column, value, data);\n innerHtml = value.toString();\n if (column.type === 'boolean' && !column.displayAsCheckBox) {\n var localeStr = (value !== 'true' && value !== 'false') ? null : value === 'true' ? 'True' : 'False';\n innerHtml = localeStr ? this.localizer.getConstant(localeStr) : innerHtml;\n }\n var fromFormatter = this.invokeFormatter(column, value, data);\n innerHtml = !isNullOrUndefined(column.formatter) ? isNullOrUndefined(fromFormatter) ? '' : fromFormatter.toString() : innerHtml;\n node.setAttribute('aria-label', innerHtml + this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n if (this.evaluate(node, cell, data, attributes, fData, isEdit) && column.type !== 'checkbox') {\n this.appendHtml(node, this.parent.sanitize(innerHtml), column.getDomSetter ? column.getDomSetter() : 'innerHTML');\n }\n else if (column.type === 'checkbox') {\n node.classList.add(literals.gridChkBox);\n node.setAttribute('aria-label', this.localizer.getConstant('CheckBoxLabel'));\n if (this.parent.selectionSettings.persistSelection) {\n value = value === 'true';\n }\n else {\n value = false;\n }\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n this.rowChkBox.id = 'checkbox-' + cell.rowID;\n checkWrap.insertBefore(this.rowChkBox.cloneNode(), checkWrap.firstChild);\n node.appendChild(checkWrap);\n }\n if (this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n cell.isSelected = true;\n }\n this.setAttributes(node, cell, attributes);\n if (column.type === 'boolean' && column.displayAsCheckBox) {\n var checked = isNaN(parseInt(value.toString(), 10)) ? value === 'true' : parseInt(value.toString(), 10) > 0;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: checked, label: ' ' });\n node.innerHTML = '';\n node.classList.add('e-gridchkbox-cell');\n checkWrap.classList.add('e-checkbox-disabled');\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n node.appendChild(checkWrap);\n node.setAttribute('aria-label', checked + this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @param {string} property - specifies the element\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.appendHtml = function (node, innerHtml, property) {\n if (property === void 0) { property = 'innerHTML'; }\n node[\"\" + property] = innerHtml;\n return node;\n };\n /**\n * @param {HTMLElement} node - specifies the node\n * @param {cell} cell - specifies the cell\n * @param {Object} attributes - specifies the attributes\n * @returns {void}\n * @hidden\n */\n CellRenderer.prototype.setAttributes = function (node, cell, attributes) {\n var column = cell.column;\n this.buildAttributeFromCell(node, cell, column.type === 'checkbox');\n setStyleAndAttributes(node, attributes);\n setStyleAndAttributes(node, cell.attributes);\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(node, { 'data-cell': column.headerText });\n }\n if (column.textAlign) {\n node.style.textAlign = column.textAlign;\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')\n && !(this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Content'\n || this.parent.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n };\n CellRenderer.prototype.buildAttributeFromCell = function (node, cell, isCheckBoxType) {\n var attr = {};\n var prop = { 'colindex': literals.dataColIndex };\n var classes = [];\n if (cell.colSpan) {\n attr.colSpan = cell.colSpan;\n }\n if (cell.rowSpan) {\n attr.rowSpan = cell.rowSpan;\n }\n if (cell.isTemplate) {\n classes.push('e-templatecell');\n }\n if (cell.isSelected) {\n classes.push.apply(classes, ['e-selectionbackground', 'e-active']);\n if (isCheckBoxType) {\n node.querySelector('.e-frame').classList.add('e-check');\n }\n }\n if (cell.isColumnSelected) {\n classes.push.apply(classes, ['e-columnselection']);\n }\n if (cell.cellType === CellType.Header) {\n attr[prop.colindex] = cell.colIndex;\n attr[literals.ariaColIndex] = cell.colIndex + 1;\n }\n else if (!isNullOrUndefined(cell.index)) {\n attr[prop.colindex] = cell.index;\n attr[literals.ariaColIndex] = cell.index + 1;\n }\n if (!cell.visible) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(node, attr);\n };\n CellRenderer.prototype.getValue = function (field, data, column) {\n return column.valueAccessor(field, data, column);\n };\n return CellRenderer;\n}());\nexport { CellRenderer };\n","import { isNullOrUndefined, extend, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { attributes as addAttributes } from '@syncfusion/ej2-base';\nimport { rowDataBound, queryCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, getObject, extendObjWithFn } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport * as literals from '../base/string-literals';\n/**\n * RowRenderer class which responsible for building row content.\n *\n * @hidden\n */\nvar RowRenderer = /** @class */ (function () {\n function RowRenderer(serviceLocator, cellType, parent) {\n this.isSpan = false;\n this.cellType = cellType;\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n this.element = this.parent.createElement('tr');\n }\n /* eslint-disable */\n /**\n * Function to render the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the columns\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @param {Element} cloneNode - specifies the cloneNode\n * @returns {Element} returns the element\n */\n /* eslint-enable */\n RowRenderer.prototype.render = function (row, columns, attributes, rowTemplate, cloneNode) {\n return this.refreshRow(row, columns, attributes, rowTemplate, cloneNode);\n };\n /* eslint-disable */\n /**\n * Function to refresh the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the column\n * @param {boolean} isChanged - specifies isChanged\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.refresh = function (row, columns, isChanged, attributes, rowTemplate) {\n var _this = this;\n if (isChanged) {\n row.data = extendObjWithFn({}, row.changes);\n this.refreshMergeCells(row);\n }\n var node = this.parent.element.querySelector('[data-uid=' + row.uid + ']');\n var tr = this.refreshRow(row, columns, attributes, rowTemplate, null, isChanged);\n var cells = [].slice.call(tr.cells);\n var tempCells = [].slice.call(node.querySelectorAll('.e-templatecell'));\n if (this.parent.isReact && tempCells.length) {\n var _loop_1 = function (col) {\n if (col.template) {\n setTimeout(function () {\n _this.parent.refreshReactColumnTemplateByUid(col.uid, true);\n }, 0);\n return \"break\";\n }\n };\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n var state_1 = _loop_1(col);\n if (state_1 === \"break\")\n break;\n }\n }\n var attr = [].slice.call(tr.attributes);\n attr.map(function (item) {\n node.setAttribute(item['name'], item['value']);\n });\n node.innerHTML = '';\n for (var _a = 0, cells_1 = cells; _a < cells_1.length; _a++) {\n var cell = cells_1[_a];\n node.appendChild(cell);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n RowRenderer.prototype.refreshRow = function (row, columns, attributes, rowTemplate, cloneNode, isEdit) {\n var tr = !isNullOrUndefined(cloneNode) ? cloneNode : this.element.cloneNode();\n var rowArgs = { data: row.data };\n var cellArgs = { data: row.data };\n var chekBoxEnable = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox' && col.field; })[0];\n var value = false;\n if (chekBoxEnable) {\n value = getObject(chekBoxEnable.field, rowArgs.data);\n }\n var selIndex = this.parent.getSelectedRowIndexes();\n if (row.isDataRow) {\n row.isSelected = selIndex.indexOf(row.index) > -1 || value;\n }\n if (row.isDataRow && this.parent.isCheckBoxSelection\n && this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n row.isSelected = true;\n if (selIndex.indexOf(row.index) === -1) {\n selIndex.push(row.index);\n }\n }\n this.buildAttributeFromRow(tr, row);\n addAttributes(tr, extend({}, attributes, {}));\n setStyleAndAttributes(tr, row.attributes);\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var _loop_2 = function (i, len) {\n var cell = row.cells[parseInt(i.toString(), 10)];\n cell.isSelected = row.isSelected;\n cell.isColumnSelected = cell.column.isSelected;\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var attrs = { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' };\n if (row.isExpand && row.cells[parseInt(i.toString(), 10)].cellType === CellType.DetailExpand) {\n attrs['class'] = this_1.parent.isPrinting ? 'e-detailrowcollapse' : 'e-detailrowexpand';\n }\n var td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, attrs, row.isExpand, isEdit);\n if (row.cells[parseInt(i.toString(), 10)].cellType !== CellType.Filter) {\n if (row.cells[parseInt(i.toString(), 10)].cellType === CellType.Data\n || row.cells[parseInt(i.toString(), 10)].cellType === CellType.CommandColumn) {\n var isReactChild = this_1.parent.parentDetails && this_1.parent.parentDetails.parentInstObj &&\n this_1.parent.parentDetails.parentInstObj.isReact;\n if (((this_1.parent.isReact && this_1.parent.requireTemplateRef) || (isReactChild &&\n this_1.parent.parentDetails.parentInstObj.requireTemplateRef)) && cell.isTemplate) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this_1;\n thisRef_1.parent.renderTemplates(function () {\n var ariaAttr = td.getAttribute('aria-label');\n td.setAttribute('aria-label', td.innerText + ariaAttr);\n thisRef_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: thisRef_1.parent.requestTypeAction\n }));\n });\n }\n else {\n this_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: this_1.parent.requestTypeAction\n }));\n }\n var isRowSpanned = false;\n if (row.index > 0 && this_1.isSpan) {\n var rowsObject = this_1.parent.isFrozenGrid() ?\n this_1.parent.contentModule.tempFreezeRows : this_1.parent.getRowsObject();\n var prevRowCells = this_1.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var uid_1 = 'uid';\n var prevRowCell = prevRowCells.filter(function (cell) {\n return cell.column.uid === row.cells[parseInt(i.toString(), 10)].column[\"\" + uid_1];\n })[0];\n isRowSpanned = prevRowCell.isRowSpanned ? prevRowCell.isRowSpanned : prevRowCell.rowSpanRange > 1;\n }\n if (cellArgs.colSpan > 1 || row.cells[parseInt(i.toString(), 10)].cellSpan > 1 || cellArgs.rowSpan > 1\n || isRowSpanned) {\n this_1.isSpan = true;\n var cellMerge = new CellMergeRender(this_1.serviceLocator, this_1.parent);\n td = cellMerge.render(cellArgs, row, i, td);\n }\n }\n if (!row.cells[parseInt(i.toString(), 10)].isSpanned) {\n tr.appendChild(td);\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = row.cells.length; i < len; i++) {\n _loop_2(i, len);\n }\n var args = { row: tr, rowHeight: this.parent.rowHeight };\n if (row.isDataRow) {\n var eventArg_1 = extend(rowArgs, args);\n eventArg_1.isSelectable = true;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var cellTemplate = eventArg_1.row.querySelectorAll('.e-templatecell');\n if (((this.parent.isReact && this.parent.requireTemplateRef) || (isReactChild &&\n this.parent.parentDetails.parentInstObj.requireTemplateRef)) && cellTemplate.length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this;\n thisRef_2.parent.renderTemplates(function () {\n thisRef_2.parent.trigger(rowDataBound, eventArg_1);\n });\n }\n else {\n this.parent.trigger(rowDataBound, eventArg_1);\n }\n row.isSelectable = eventArg_1.isSelectable;\n var isDraggable = this.parent.isRowDragable();\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n var primaryKey_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var pKey_1 = row.data ? row.data[\"\" + primaryKey_1] : null;\n var SelectedRecords = eventArg_1.isSelectable ? this.parent.partialSelectedRecords :\n this.parent.disableSelectedRecords;\n if (!SelectedRecords.some(function (data) { return data[\"\" + primaryKey_1] === pKey_1; })) {\n SelectedRecords.push(row.data);\n }\n }\n if (!eventArg_1.isSelectable) {\n this.parent.selectionModule.isPartialSelection = true;\n row.isSelected = false;\n var chkBox = args.row.querySelectorAll('.e-rowcell.e-gridchkbox');\n var isDrag = eventArg_1.row.querySelector('.e-rowdragdrop');\n var cellIdx = this.parent.groupSettings.columns.length + (isDrag || this.parent.isDetail() ? 1 : 0);\n for (var i = 0; i < chkBox.length; i++) {\n chkBox[parseInt(i.toString(), 10)].firstElementChild.classList.add('e-checkbox-disabled');\n chkBox[parseInt(i.toString(), 10)].querySelector('.e-frame').classList.remove('e-check');\n }\n if (row.cells.length) {\n for (var i = cellIdx; i < row.cells.length; i++) {\n var cell = eventArg_1.row.querySelector('.e-rowcell[data-colindex=\"' + row.cells[parseInt(i.toString(), 10)].index + '\"]');\n if (cell) {\n removeClass([cell], ['e-selectionbackground', 'e-active']);\n }\n }\n }\n if (isDrag) {\n removeClass([isDrag], ['e-selectionbackground', 'e-active']);\n }\n }\n if (this.parent.childGrid || isDraggable || this.parent.detailTemplate) {\n var td = tr.querySelectorAll('.e-rowcell:not(.e-hide)')[0];\n if (td) {\n td.classList.add('e-detailrowvisible');\n }\n }\n }\n if (this.parent.enableVirtualization) {\n rowArgs.rowHeight = this.parent.rowHeight;\n }\n if (rowArgs.rowHeight) {\n tr.style.height = rowArgs.rowHeight + 'px';\n }\n else if (this.parent.rowHeight && (tr.querySelector('.e-headercell') || tr.querySelector('.e-groupcaption'))) {\n tr.style.height = this.parent.rowHeight + 'px';\n }\n if (row.cssClass) {\n tr.classList.add(row.cssClass);\n }\n if (row.lazyLoadCssClass) {\n tr.classList.add(row.lazyLoadCssClass);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n tr.classList.add('e-verticalwrap');\n }\n var vFTable = this.parent.enableColumnVirtualization && this.parent.frozenColumns !== 0;\n if (!vFTable && this.parent.aggregates.length && this.parent.element.scrollHeight > this.parent.height) {\n for (var i = 0; i < this.parent.aggregates.length; i++) {\n var property = 'properties';\n var column = 'columns';\n if (this.parent.aggregates[parseInt(i.toString(), 10)][\"\" + property][\"\" + column][0].footerTemplate) {\n var summarycell = [].slice.call(tr.getElementsByClassName('e-summarycell'));\n if (summarycell.length) {\n var lastSummaryCell = (summarycell[summarycell.length - 1]);\n addClass([lastSummaryCell], ['e-lastsummarycell']);\n var firstSummaryCell = (summarycell[0]);\n addClass([firstSummaryCell], ['e-firstsummarycell']);\n }\n }\n }\n }\n return tr;\n };\n RowRenderer.prototype.refreshMergeCells = function (row) {\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n cell.isSpanned = false;\n }\n return row;\n };\n /* eslint-disable */\n /**\n * Function to check and add alternative row css class.\n *\n * @param {Element} tr - specifies the tr element\n * @param {Row} row - specifies the row\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.buildAttributeFromRow = function (tr, row) {\n var attr = {};\n var prop = { 'rowindex': literals.dataRowIndex, 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n var classes = [];\n if (row.isDataRow) {\n classes.push(literals.row);\n }\n if (row.isAltRow) {\n classes.push('e-altrow');\n }\n if (row.isCaptionRow) {\n classes.push('e-groupcaptionrow');\n }\n if (row.isAggregateRow && row.parentUid) {\n classes.push('e-groupfooterrow');\n }\n if (!isNullOrUndefined(row.index)) {\n attr[literals.ariaRowIndex] = row.index + 1;\n attr[prop.rowindex] = row.index;\n }\n if (row.rowSpan) {\n attr.rowSpan = row.rowSpan;\n }\n if (row.uid) {\n attr[prop.dataUID] = row.uid;\n }\n if (row.isSelected) {\n attr[prop.ariaSelected] = true;\n }\n if (row.visible === false) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(tr, attr);\n };\n return RowRenderer;\n}());\nexport { RowRenderer };\n","/**\n * AriaService\n *\n * @hidden\n */\nvar AriaService = /** @class */ (function () {\n function AriaService() {\n }\n AriaService.prototype.setOptions = function (target, options) {\n var props = Object.keys(options);\n for (var i = 0; i < props.length; i++) {\n setStateAndProperties(target, config[props[parseInt(i.toString(), 10)]], options[props[parseInt(i.toString(), 10)]]);\n }\n };\n AriaService.prototype.setExpand = function (target, expand) {\n setStateAndProperties(target, config.expand, expand);\n };\n AriaService.prototype.setSort = function (target, direction) {\n setStateAndProperties(target, config.sort, direction, typeof direction === 'boolean');\n };\n AriaService.prototype.setBusy = function (target, isBusy) {\n setStateAndProperties(target, config.busy, isBusy);\n setStateAndProperties(target, config.invalid, null, true);\n };\n AriaService.prototype.setGrabbed = function (target, isGrabbed, remove) {\n setStateAndProperties(target, config.grabbed, isGrabbed, remove);\n };\n AriaService.prototype.setDropTarget = function (target, isTarget) {\n setStateAndProperties(target, config.dropeffect, 'copy', !isTarget);\n };\n return AriaService;\n}());\nexport { AriaService };\n/**\n * @param {HTMLElement} target - specifies the target\n * @param {string} attribute - specifies the attribute\n * @param {ValueType} value - specifies the value\n * @param {boolean} remove - specifies the boolean for remove\n * @returns {void}\n * @hidden\n */\nfunction setStateAndProperties(target, attribute, value, remove) {\n if (remove && target) {\n target.removeAttribute(attribute);\n return;\n }\n if (target) {\n target.setAttribute(attribute, value);\n }\n}\nvar config = {\n expand: 'aria-expanded',\n role: 'role',\n datarole: 'data-role',\n selected: 'aria-selected',\n multiselectable: 'aria-multiselectable',\n sort: 'aria-sort',\n busy: 'aria-busy',\n invalid: 'aria-invalid',\n grabbed: 'aria-grabbed',\n dropeffect: 'aria-dropeffect',\n haspopup: 'aria-haspopup',\n level: 'aria-level',\n colcount: 'aria-colcount',\n rowcount: 'aria-rowcount'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, getValue, closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, extend, Browser } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport * as event from '../base/constant';\nimport { Row } from '../models/row';\nimport { RowModelGenerator } from './row-model-generator';\nimport { parentsUntil, addRemoveEventListener, findCellIndex } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * FocusStrategy class\n *\n * @hidden\n */\nvar FocusStrategy = /** @class */ (function () {\n function FocusStrategy(parent) {\n this.currentInfo = {};\n this.oneTime = true;\n this.swap = {};\n /** @hidden */\n this.isInfiniteScroll = false;\n this.forget = false;\n this.skipFocus = true;\n this.focusByClick = false;\n this.firstHeaderCellClick = false;\n this.prevIndexes = {};\n this.refMatrix = this.refreshMatrix(true);\n this.actions = ['downArrow', 'upArrow'];\n this.isVirtualScroll = false;\n this.parent = parent;\n this.rowModelGen = new RowModelGenerator(this.parent);\n this.addEventListener();\n }\n FocusStrategy.prototype.focusCheck = function (e) {\n var target = e.target;\n this.focusByClick = true;\n this.firstHeaderCellClick = true;\n this.skipFocus = target.classList.contains('e-grid');\n };\n FocusStrategy.prototype.onFocus = function (e) {\n if (this.parent.isDestroyed || Browser.isDevice || this.parent.enableVirtualization\n || this.parent.element.querySelector('.e-masked-table') || (!this.parent.isInitialLoad && e\n && e.target === this.parent.element && this.parent.element.querySelector('.e-spin-show'))) {\n return;\n }\n this.setActive(!this.parent.enableHeaderFocus && this.parent.frozenRows === 0, this.parent.isFrozenGrid());\n if (!this.parent.enableHeaderFocus && !this.parent.getCurrentViewRecords().length && ((this.parent.editSettings.mode !== 'Batch')\n || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule && !this.parent.editModule.getBatchChanges()[literals.addedRecords].length))) {\n this.getContent().matrix.\n generate(this.rowModelGen.generateRows({ rows: [new Row({ isDataRow: true })] }), this.getContent().selector, false);\n }\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n if (this.skipFocus && !(e && e.target === this.parent.element)) {\n this.focus(e);\n this.skipFocus = false;\n }\n };\n FocusStrategy.prototype.passiveFocus = function (e) {\n if (this.parent.isDestroyed) {\n return;\n }\n var firstHeaderCell = this.parent.getHeaderContent().querySelector('.e-headercell');\n var lastRowCell = this.parent.getContentTable().querySelector('tr:last-child td:last-child');\n if ((e.target === firstHeaderCell || lastRowCell) && e.relatedTarget && !parentsUntil(e.relatedTarget, 'e-grid')\n && !this.firstHeaderCellClick) {\n this.currentInfo.element = e.target;\n this.currentInfo.elementToFocus = e.target;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n this.firstHeaderCellClick = false;\n if (e.target && e.target.classList.contains('e-detailcell')) {\n this.currentInfo.skipAction = false;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n };\n FocusStrategy.prototype.onBlur = function (e) {\n // The below boolean condition for gantt team focus fix.\n var isGantt = parentsUntil(e.target, 'e-gantt') && e.target.classList.contains('e-rowcell')\n && (!isNullOrUndefined(e.target.nextElementSibling)\n && e.target.nextElementSibling.classList.contains('e-rowcell')) ? true : false;\n if ((this.parent.isEdit || e && (!e.relatedTarget || closest(e.relatedTarget, '.e-grid'))\n && !(this.parent.element.classList.contains('e-childgrid') && !this.parent.element.matches(':focus-within')))\n && !(!isGantt && isNullOrUndefined(e.relatedTarget) && parseInt(e.target.getAttribute('data-colindex'), 10) === 0\n && parseInt(e.target.getAttribute('index'), 10) === 0) && !(!isGantt && isNullOrUndefined(e.relatedTarget)\n && !closest(document.activeElement, '.e-grid') && !isNullOrUndefined(e['sourceCapabilities']))) {\n return;\n }\n this.removeFocus();\n this.skipFocus = true;\n this.currentInfo.skipAction = false;\n this.setLastContentCellTabIndex();\n this.setFirstFocusableTabIndex();\n this.firstHeaderCellClick = false;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.setFirstFocusableTabIndex = function () {\n var gObj = this.parent;\n gObj.element.tabIndex = -1;\n if (gObj.allowGrouping && gObj.groupSettings.showDropArea) {\n var groupModule = gObj.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n groupModule.element.tabIndex = -1;\n focusableGroupedItems[0].tabIndex = 0;\n }\n else {\n groupModule.element.tabIndex = 0;\n }\n return;\n }\n if (gObj.toolbar || gObj.toolbarTemplate) {\n var toolbarElement = gObj.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0 && focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input')) {\n toolbarElement.tabIndex = -1;\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').tabIndex = 0;\n }\n else {\n toolbarElement.tabIndex = 0;\n }\n return;\n }\n if (gObj.getColumns().length) {\n var firstHeaderCell = gObj.getHeaderContent().querySelector('.e-headercell');\n firstHeaderCell.tabIndex = 0;\n if (this.parent.isFrozenGrid() && (this.parent.getFrozenMode() === 'Left'\n || this.parent.getFrozenMode() === literals.leftRight)) {\n this.setActive(false, true);\n }\n else {\n this.setActive(false);\n }\n if (!isNullOrUndefined(this.active) && (isNullOrUndefined(this.active.target) || !this.active.target.classList.contains('e-columnmenu'))) {\n var firstHeaderCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstHeaderCellIndex[0]][firstHeaderCellIndex[1]] === 0) {\n firstHeaderCellIndex = findCellIndex(this.active.matrix.matrix, firstHeaderCellIndex, true);\n }\n this.active.matrix.current = firstHeaderCellIndex;\n }\n return;\n }\n };\n FocusStrategy.prototype.setLastContentCellTabIndex = function () {\n var contentTable = this.parent.getContentTable();\n if (contentTable.rows[contentTable.rows.length - 1]) {\n var lastCell = contentTable.rows[contentTable.rows.length - 1].lastElementChild;\n lastCell.tabIndex = 0;\n }\n };\n FocusStrategy.prototype.onClick = function (e, force) {\n if (parentsUntil(e.target, 'e-filterbarcell') && (parentsUntil(e.target, 'e-multiselect') ||\n e.target.classList.contains('e-input-group-icon'))) {\n return;\n }\n var isContent = !isNullOrUndefined(closest(e.target, '.' + literals.gridContent));\n var isHeader = !isNullOrUndefined(closest(e.target, '.' + literals.gridHeader));\n isContent = isContent && isHeader ? !isContent : isContent;\n var isFrozen = !isNullOrUndefined(closest(e.target, '.' + literals.frozenContent)) ||\n !isNullOrUndefined(closest(e.target, '.' + literals.frozenHeader));\n var isFrozenRight = false;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n isFrozenRight = !isNullOrUndefined(closest(e.target, '.e-frozen-right-content')) ||\n !isNullOrUndefined(closest(e.target, '.e-frozen-right-header'));\n isFrozen = isFrozen && !isFrozenRight;\n }\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader)) ||\n e.target.classList.contains(literals.content) ||\n !isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader))) {\n this.clearOutline();\n return;\n }\n var beforeArgs = { cancel: false, byKey: false, byClick: !isNullOrUndefined(e.target), clickArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel || closest(e.target, '.e-inline-edit')) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (this.getContent()) {\n var returnVal = this.getContent().onClick(e, force);\n if (returnVal === false) {\n return;\n }\n if (this.parent.isFrozenGrid() && isHeader && e.target === this.parent.getHeaderContent().firstChild\n && this.active.matrix.current[0] === -1 && this.active.matrix.current[1] === this.active.matrix.columns) {\n this.active.matrix.current = [0, 0];\n }\n this.focus();\n if (this.currentInfo.element.classList.contains('e-rowcell')) {\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n }\n };\n FocusStrategy.prototype.onKeyPress = function (e) {\n var isFrozenGrid = this.parent.isFrozenGrid();\n if (this.parent.allowPaging) {\n var pagerElement = this.parent.pagerModule.pagerObj.element;\n var focusablePagerElements = this.parent.pagerModule.pagerObj.getFocusablePagerElements(pagerElement, []);\n if (this.parent.childGrid && this.allowToPaging(e) && focusablePagerElements.length) {\n focusablePagerElements[0].tabIndex = 0;\n }\n if (this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n if (e.action === 'shiftTab' && focusablePagerElements.length && focusablePagerElements[0] === e.target) {\n this.setActive(true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(lastHeaderCellIndex) ? lastHeaderCellIndex :\n this.findBatchEditCell(lastHeaderCellIndex, false) : lastHeaderCellIndex;\n e.preventDefault();\n this.focus(e);\n return;\n }\n if (!(e.action === 'tab' && this.parent.element.classList.contains('e-childgrid')\n && ((!this.parent.pageSettings.pageSizes && focusablePagerElements.length\n && focusablePagerElements[focusablePagerElements.length - 1] === e.target)\n || (this.parent.pagerModule.pagerObj.getDropDownPage() === e.target)))) {\n this.parent.pagerModule.pagerObj.changePagerFocus(e);\n return;\n }\n else {\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n }\n }\n if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && (e.keyCode === 38 || (e.shiftKey && e.keyCode === 9))) {\n e.preventDefault();\n this.focus(e);\n return;\n }\n else if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && e.keyCode === 9) {\n e.preventDefault();\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n if (this.parent.pagerModule.pagerObj.checkFirstPagerFocus()) {\n var lastRow = this.getContent().matrix.rows;\n var lastColumn = this.getContent().matrix.columns;\n this.getContent().matrix.current = [lastRow, lastColumn];\n }\n }\n if (this.skipOn(e)) {\n return;\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent') && !isFrozenGrid) {\n var rows = [].slice.call(this.parent.getContentTable().rows);\n var lastCell = rows[rows.length - 1].lastElementChild;\n if (e.target === lastCell) {\n this.setActive(true);\n this.setLastContentCellActive();\n }\n }\n if (e.action === 'shiftTab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (e.target === this.parent.element) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n if (parentsUntil(e.target, 'e-toolbar')) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n }\n else if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n }\n var focusFirstHeaderCell = false;\n if (e.action === 'tab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea\n && (e.target === this.parent.element || e.target.classList.contains('e-groupdroparea'))) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n e.preventDefault();\n focusableGroupedItems[0].focus();\n return;\n }\n if (!e.target.classList.contains('e-groupdroparea')) {\n e.preventDefault();\n groupModule.element.focus();\n return;\n }\n }\n if ((this.parent.toolbar || this.parent.toolbarTemplate) && (e.target === this.parent.element\n || parentsUntil(e.target, 'e-groupdroparea')\n || e.target.classList.contains('e-toolbar'))) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0) {\n e.preventDefault();\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n return;\n }\n if (!e.target.classList.contains('e-toolbar')) {\n e.preventDefault();\n toolbarElement.focus();\n return;\n }\n }\n if (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')) {\n focusFirstHeaderCell = true;\n }\n }\n if (focusFirstHeaderCell) {\n if (isFrozenGrid && (this.parent.getFrozenMode() === 'Left'\n || this.parent.getFrozenMode() === literals.leftRight)) {\n this.setActive(false, true);\n }\n else if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.setActive(true);\n }\n else {\n this.setActive(false);\n }\n this.active.matrix.current = [0, -1];\n }\n this.activeKey = e.action;\n var beforeArgs = { cancel: false, byKey: true, byClick: false, keyArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel) {\n return;\n }\n var bValue = this.getContent().matrix.current;\n var prevActiveName = this.getActiveName();\n var prevBatchValue = this.active && this.active.matrix.current ?\n [this.active.matrix.current[0], this.active.matrix.current[1]] : undefined;\n this.currentInfo.outline = true;\n var swapInfo = this.getContent().jump(e.action, bValue);\n this.swap = swapInfo;\n if (swapInfo.swap && !(isFrozenGrid && this.parent.editSettings.mode === 'Batch'\n && (e.action === 'tab' || e.action === 'shiftTab'))) {\n this.setActive(!swapInfo.toHeader, swapInfo.toFrozen, swapInfo.toFrozenRight);\n this.getContent().matrix.current = this.getContent().getNextCurrent(bValue, swapInfo, this.active, e.action);\n this.prevIndexes = {};\n }\n this.setActiveByKey(e.action, this.getContent());\n var returnVal = isFrozenGrid && this.parent.editSettings.mode === 'Batch' && e.target && (e.action === 'tab'\n || e.action === 'shiftTab') && (parentsUntil(e.target, 'e-gridheader')\n || parentsUntil(e.target, 'e-gridcontent')) ? undefined\n : this.content.lastIdxCell ? false : this.getContent().onKeyPress(e);\n if (e.target && parentsUntil(e.target, 'e-gridheader')) {\n if (!isFrozenGrid) {\n if (e.action === 'tab' && bValue.toString() === this.active.matrix.current.toString()) {\n var nextHeaderCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n if (this.active.matrix.current.toString() === lastHeaderCellIndex.toString()) {\n returnVal = true;\n this.setActive(true);\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(firstContentCellIndex) ? firstContentCellIndex :\n this.findBatchEditCell(firstContentCellIndex, true) : firstContentCellIndex;\n }\n else if (this.active.matrix.current.toString() !== nextHeaderCellIndex.toString()) {\n this.active.matrix.current = nextHeaderCellIndex;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n var previousCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, false);\n if (previousCellIndex.toString() === this.active.matrix.current.toString()) {\n this.focusOutFromHeader(e);\n return;\n }\n if (this.active.matrix.current.toString() !== previousCellIndex.toString() && !returnVal) {\n returnVal = true;\n this.active.matrix.current = previousCellIndex;\n }\n }\n }\n else {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.setFrozenBatchEditCell(prevActiveName, prevBatchValue, e.action === 'tab' ? true : false);\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString() && !swapInfo.swap\n && !(this.parent.editSettings.mode === 'Batch' && !(this.getActiveName() === prevActiveName))) {\n this.focusOutFromHeader(e);\n return;\n }\n }\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n if (!isFrozenGrid) {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.active.matrix.current = this.findBatchEditCell(prevBatchValue, e.action === 'tab' ? true : false);\n if (e.action === 'tab' && prevBatchValue.toString() === this.active.matrix.current.toString()) {\n this.parent.editModule.editModule.addBatchRow = true;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.focusOutFromHeader(e);\n return;\n }\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n if (!returnVal && (firstContentCellIndex.toString() === this.active.matrix.current.toString()\n || (this.parent.editSettings.mode === 'Batch'\n && prevBatchValue.toString() === this.active.matrix.current.toString()))) {\n returnVal = true;\n this.setActive(false);\n this.setLastContentCellActive();\n }\n }\n }\n else {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.setFrozenBatchEditCell(prevActiveName, prevBatchValue, e.action === 'tab' ? true : false);\n if (e.action === 'tab' && prevBatchValue.toString() === this.active.matrix.current.toString()\n && this.getActiveName() === prevActiveName) {\n this.parent.editModule.editModule.addBatchRow = true;\n }\n }\n }\n }\n if (returnVal === false) {\n this.clearIndicator();\n if (e.action === 'shiftTab' && bValue.toString() === [0, 0].toString()) {\n this.parent.element.tabIndex = -1;\n }\n if (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus() && this.allowToPaging(e)\n && bValue.toString() !== [0, 0].toString()) {\n e.preventDefault();\n if (e.keyCode === 40) {\n this.parent.pagerModule.pagerObj.setPagerContainerFocus();\n return;\n }\n else if (e.keyCode === 9) {\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n e.preventDefault();\n this.focus(e);\n };\n FocusStrategy.prototype.isValidBatchEditCell = function (cellIndex) {\n var cell = this.active.getTable().rows[cellIndex[0]].cells[cellIndex[1]];\n var tr = closest(cell, 'tr');\n var cellColIndex = parseInt(cell.getAttribute('data-colindex'), 10);\n var cellCol = this.parent.getColumns()[parseInt(cellColIndex.toString(), 10)];\n if (this.active.matrix.matrix[cellIndex[0]][cellIndex[1]] === 1\n && (!tr.classList.contains('e-row') || (tr.classList.contains('e-insertedrow') || !cellCol.isPrimaryKey) && cellCol.allowEditing)) {\n return true;\n }\n return false;\n };\n FocusStrategy.prototype.findBatchEditCell = function (currentCellIndex, next, limitRow) {\n var cellIndex = currentCellIndex;\n var tempCellIndex = currentCellIndex;\n var cellIndexObtain = false;\n while (!cellIndexObtain) {\n var prevTempCellIndex = tempCellIndex;\n tempCellIndex = findCellIndex(this.active.matrix.matrix, tempCellIndex, next);\n if ((prevTempCellIndex.toString() === tempCellIndex.toString())\n || (limitRow && prevTempCellIndex[0] !== tempCellIndex[0])) {\n cellIndexObtain = true;\n continue;\n }\n if (this.isValidBatchEditCell(tempCellIndex)) {\n cellIndex = tempCellIndex;\n cellIndexObtain = true;\n }\n }\n return cellIndex;\n };\n FocusStrategy.prototype.setFrozenBatchEditCell = function (currentActiveName, currentCellIndex, next, nextRow) {\n var gObj = this.parent;\n var nextCell;\n var nextSection = false;\n if (nextRow !== undefined) {\n nextCell = [nextRow, next ? 0 : this.active.matrix.matrix[parseInt(nextRow.toString(), 10)].length - 1];\n }\n else {\n nextCell = next ? [currentCellIndex[0], currentCellIndex[1] + 1] : [currentCellIndex[0], currentCellIndex[1] - 1];\n }\n if (this.active.matrix.matrix[nextCell[0]] && this.active.matrix.matrix[nextCell[0]][nextCell[1]]) {\n if (this.isValidBatchEditCell(nextCell)) {\n this.active.matrix.current = nextCell;\n }\n else {\n var prevNextCell = nextCell;\n nextCell = this.findBatchEditCell(nextCell, next, true);\n if (prevNextCell.toString() === nextCell.toString()) {\n nextSection = true;\n }\n else {\n this.active.matrix.current = nextCell;\n }\n }\n }\n else {\n nextSection = true;\n }\n if (nextSection) {\n var activeName = this.getActiveName();\n var frozenMode = gObj.getFrozenMode();\n var rowIndex = nextCell[0];\n var rowDec = rowIndex - 1;\n var rowInc = rowIndex + 1;\n var notPrev = !next && rowDec === -1;\n var notNext = next && rowInc > this.active.matrix.matrix.length - 1;\n var returnCurrentActiveName = ((activeName === 'FrozenLeftHeader' || (activeName === 'Movableheader'\n && frozenMode === 'Right')) && notPrev) || ((activeName === 'FrozenRightContent' || (activeName === 'MovableContent'\n && frozenMode === 'Left')) && notNext);\n if (returnCurrentActiveName) {\n this.setActiveByName(currentActiveName);\n this.active.matrix.current = currentCellIndex;\n }\n else {\n var frozenLeftRightPrev = frozenMode === 'Left-Right' && !next;\n var frozenLeftRightNext = frozenMode === 'Left-Right' && next;\n var frozenLeftNotNext = frozenMode === 'Left' && notNext;\n var frozenLeftNext = frozenMode === 'Left' && next;\n var frozenRightPrev = frozenMode === 'Right' && !next;\n var frozenRightNotPrev = frozenMode === 'Right' && notPrev;\n var content = (activeName === 'Movableheader' && frozenLeftNotNext) || (activeName === 'FrozenRightHeader'\n && notNext) || (activeName === 'FrozenLeftContent' && !notPrev) || (activeName === 'MovableContent'\n && !frozenRightNotPrev) || activeName === 'FrozenRightContent';\n var frozenContent = ((activeName === 'Movableheader' || activeName === 'MovableContent')\n && !frozenLeftRightNext) || ((activeName === 'FrozenRightHeader' || activeName === 'FrozenRightContent')\n && frozenLeftRightNext);\n var frozenRightContent = ((activeName === 'FrozenLeftHeader' || activeName === 'FrozenLeftContent')\n && frozenLeftRightPrev) || ((activeName === 'Movableheader' || activeName === 'MovableContent')\n && frozenLeftRightNext);\n this.setActive(content, frozenContent, frozenRightContent);\n var nextIndex = (activeName === 'Movableheader' && frozenLeftNotNext)\n || (activeName === 'FrozenRightHeader' && notNext) ? 0\n : ((activeName === 'Movableheader' || activeName === 'MovableContent') && frozenLeftNext)\n || ((activeName === 'FrozenRightHeader' || activeName === 'FrozenRightContent') && next) ? rowInc\n : (activeName === 'FrozenLeftContent' && notPrev)\n || (activeName === 'MovableContent' && frozenRightNotPrev) ? this.active.matrix.matrix.length - 1\n : ((activeName === 'FrozenLeftHeader' || activeName === 'FrozenLeftContent') && !next)\n || ((activeName === 'Movableheader' || activeName === 'MovableContent') && frozenRightPrev) ? rowDec\n : rowIndex;\n this.setFrozenBatchEditCell(currentActiveName, currentCellIndex, next, nextIndex);\n }\n }\n };\n FocusStrategy.prototype.getActiveName = function () {\n var activeName;\n if (this.active) {\n var activeTable = this.active.getTable();\n activeName = parentsUntil(activeTable, 'e-frozen-left-header') ? 'FrozenLeftHeader' :\n parentsUntil(activeTable, 'e-movableheader') ? 'Movableheader' :\n parentsUntil(activeTable, 'e-frozen-right-header') ? 'FrozenRightHeader' :\n parentsUntil(activeTable, 'e-frozen-left-content') ? 'FrozenLeftContent' :\n parentsUntil(activeTable, 'e-movablecontent') ? 'MovableContent' :\n parentsUntil(activeTable, 'e-frozen-right-content') ? 'FrozenRightContent' :\n undefined;\n }\n return activeName;\n };\n FocusStrategy.prototype.setActiveByName = function (activeName) {\n var frozenMode = this.parent.getFrozenMode();\n switch (activeName) {\n case 'FrozenLeftHeader':\n this.setActive(false, true);\n break;\n case 'Movableheader':\n this.setActive(false);\n break;\n case 'FrozenRightHeader':\n this.setActive(false, frozenMode === 'Right' ? true : false, frozenMode === 'Right' ? false : true);\n break;\n case 'FrozenLeftContent':\n this.setActive(true, true);\n break;\n case 'MovableContent':\n this.setActive(true);\n break;\n case 'FrozenRightContent':\n this.setActive(true, frozenMode === 'Right' ? true : false, frozenMode === 'Right' ? false : true);\n break;\n }\n };\n FocusStrategy.prototype.setLastContentCellActive = function () {\n var lastContentCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.active.matrix.matrix, lastContentCellIndex, false);\n }\n this.active.matrix.current = lastContentCellIndex;\n };\n FocusStrategy.prototype.focusOutFromChildGrid = function (e) {\n var parentTable = parentsUntil(this.parent.element, 'e-table');\n var parentGrid = parentsUntil(parentTable, 'e-grid').ej2_instances[0];\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n var uid = parentsUntil(this.parent.element, 'e-detailrow').getAttribute('data-uid');\n var parentRows = [].slice.call(parentGrid.getContentTable().rows);\n var parentRowIndex = parentRows.map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n if (e.action === 'tab' && parentRowIndex >= parentRows.length - 1) {\n return;\n }\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n e.preventDefault();\n var nextFocusCell;\n parentGrid.focusModule.removeFocus();\n if (e.action === 'shiftTab') {\n var previousRow = parentRows[parentRowIndex - 1];\n var rowCells = previousRow.cells;\n for (var i = rowCells.length - 1; i >= 0; i--) {\n nextFocusCell = rowCells[parseInt(i.toString(), 10)];\n if (!nextFocusCell.classList.contains('e-hide')) {\n parentGrid.focusModule.active.matrix.current = [parentRowIndex - 1, i];\n break;\n }\n }\n }\n else {\n nextFocusCell = parentRows[parentRowIndex + 1].cells[0];\n parentGrid.focusModule.active.matrix.current = [parentRowIndex + 1, 0];\n }\n parentGrid.focusModule.currentInfo.element = nextFocusCell;\n parentGrid.focusModule.currentInfo.elementToFocus = nextFocusCell;\n addClass([nextFocusCell], ['e-focused', 'e-focus']);\n nextFocusCell.tabIndex = 0;\n nextFocusCell.focus();\n };\n FocusStrategy.prototype.focusOutFromHeader = function (e) {\n this.removeFocus();\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n e.preventDefault();\n if (focusableToolbarItems.length > 0) {\n focusableToolbarItems[focusableToolbarItems.length - 1].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n }\n else {\n toolbarElement.focus();\n }\n return;\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n return;\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n };\n FocusStrategy.prototype.allowToPaging = function (e) {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.allowAdding && e.keyCode !== 40) {\n return false;\n }\n return true;\n };\n FocusStrategy.prototype.skipOn = function (e) {\n var target = e.target;\n if (!target) {\n return false;\n }\n if (this.currentInfo.skipAction) {\n this.clearIndicator();\n return true;\n }\n if (['pageUp', 'pageDown', 'altDownArrow'].indexOf(e.action) > -1) {\n this.clearIndicator();\n return true;\n }\n if (this.parent.allowGrouping) {\n var focusableGroupedItems = this.parent.groupModule.getFocusableGroupedItems();\n if (parentsUntil(e.target, 'e-groupheadercell')\n && !((e.target === focusableGroupedItems[0] && e.action === 'shiftTab')\n || (e.target === focusableGroupedItems[focusableGroupedItems.length - 1] && e.action === 'tab'))) {\n return true;\n }\n }\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = toolbarElement\n .querySelectorAll('.e-toolbar-item:not(.e-overlay):not(.e-hidden)');\n if (parentsUntil(e.target, 'e-toolbar-item')\n && !(focusableToolbarItems.length > 0 && ((parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[0] && e.action === 'shiftTab')\n || (parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[focusableToolbarItems.length - 1] && e.action === 'tab')))) {\n return true;\n }\n }\n var th = closest(target, 'th') && !closest(target, 'th').tabIndex;\n if (e.target.classList.contains('e-filterbaroperator') && (e.keyCode === 13 || e.keyCode === 27)) {\n var inputTarget = closest(e.target, '.e-filterbarcell');\n inputTarget.querySelector('input').focus();\n }\n if (th && closest(document.activeElement, '.e-filterbarcell') !== null) {\n this.removeFocus();\n }\n var filterCell = closest(document.activeElement, '.e-filterbarcell') !== null;\n if (this.parent.enableHeaderFocus && filterCell) {\n var matrix = this.active.matrix;\n var current = matrix.current;\n filterCell = matrix.matrix[current[0]].lastIndexOf(1) !== current[1];\n }\n return (e.action === 'delete'\n || (this.parent.editSettings.mode !== 'Batch' && (this.parent.isEdit || ['insert', 'f2'].indexOf(e.action) > -1))\n || ((filterCell && this.parent.enableHeaderFocus) || (filterCell && e.action !== 'tab' && e.action !== 'shiftTab') ||\n closest(document.activeElement, '#' + this.parent.element.id + '_searchbar') !== null\n && ['enter', 'leftArrow', 'rightArrow',\n 'shiftLeft', 'shiftRight', 'ctrlPlusA'].indexOf(e.action) > -1)\n || (closest(target, '.' + literals.gridContent) === null && closest(target, '.' + literals.gridHeader) === null\n && !(e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')))\n || (e.action === 'space' && (!target.classList.contains(literals.gridChkBox) && closest(target, '.' + literals.gridChkBox) === null\n && closest(target, '.e-headerchkcelldiv') === null))) || closest(target, '.e-filter-popup') !== null;\n };\n FocusStrategy.prototype.focusVirtualElement = function (e) {\n var _this = this;\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n var data = { virtualData: {}, isAdd: false, isCancel: false };\n this.parent.notify(event.getVirtualData, data);\n var isKeyFocus = this.actions.some(function (value) { return value === _this.activeKey; });\n var isSelected = this.parent.contentModule ?\n this.parent.contentModule.selectedRowIndex > -1 : false;\n if (data.isAdd || Object.keys(data.virtualData).length || isKeyFocus || data.isCancel || isSelected) {\n this.parent.notify(event.resetVirtualFocus, { isCancel: false });\n data.isCancel = false;\n this.parent.contentModule.selectedRowIndex = -1;\n if (isKeyFocus) {\n this.activeKey = this.empty;\n this.parent.notify('virtaul-key-handler', e);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n if (this.isVirtualScroll || this.isInfiniteScroll) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n this.currentInfo.elementToFocus.focus();\n }\n }\n }\n this.isVirtualScroll = this.isInfiniteScroll = false;\n };\n FocusStrategy.prototype.getFocusedElement = function () {\n return this.currentInfo.elementToFocus;\n };\n FocusStrategy.prototype.getContent = function () {\n return this.active || this.content;\n };\n FocusStrategy.prototype.setActive = function (content, isFrozen, isFrozenRight) {\n this.active = content ? isFrozen ? this.fContent : isFrozenRight ? this.frContent : this.content :\n isFrozen ? this.fHeader : isFrozenRight ? this.frHeader : this.header;\n };\n FocusStrategy.prototype.setFocusedElement = function (element, e) {\n var _this = this;\n this.currentInfo.elementToFocus = element;\n setTimeout(function () {\n if (!isNullOrUndefined(_this.currentInfo.elementToFocus)) {\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.focusVirtualElement(e);\n }\n else {\n _this.currentInfo.elementToFocus.focus();\n }\n }\n }, 0);\n };\n FocusStrategy.prototype.focus = function (e) {\n this.parent.notify(event.virtaulCellFocus, e);\n this.removeFocus();\n this.addFocus(this.getContent().getFocusInfo(), e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FocusStrategy.prototype.removeFocus = function (e) {\n if (!this.currentInfo.element) {\n return;\n }\n if (this.parent.isReact && this.currentInfo.element.classList.contains('e-rowcell') && !this.currentInfo.element.parentElement) {\n this.currentInfo.element = this.parent.getCellFromIndex(this.prevIndexes.rowIndex, this.prevIndexes.cellIndex);\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.currentInfo.element.tabIndex = -1;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.addOutline = function () {\n var info = this.getContent().getFocusInfo();\n if (info.element) {\n addClass([info.element], ['e-focused']);\n addClass([info.elementToFocus], ['e-focus']);\n }\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusHeader = function () {\n this.setActive(false, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusContent = function () {\n this.setActive(true, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n FocusStrategy.prototype.resetFocus = function () {\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n this.focus();\n };\n FocusStrategy.prototype.addFocus = function (info, e) {\n this.currentInfo = info;\n this.currentInfo.outline = info.outline && (!isNullOrUndefined(e) || this.isVirtualScroll);\n if (this.isInfiniteScroll) {\n this.currentInfo.outline = true;\n }\n if (!info.element) {\n return;\n }\n var isFocused = info.elementToFocus.classList.contains('e-focus');\n if (isFocused) {\n return;\n }\n if (this.currentInfo.outline) {\n addClass([info.element], ['e-focused']);\n }\n addClass([info.elementToFocus], ['e-focus']);\n info.element.tabIndex = 0;\n if (!isFocused) {\n this.setFocusedElement(info.elementToFocus, e);\n }\n this.parent.notify(event.cellFocused, {\n element: info.elementToFocus,\n parent: info.element,\n indexes: this.getContent().matrix.current,\n byKey: !isNullOrUndefined(e),\n byClick: isNullOrUndefined(e),\n keyArgs: e,\n isJump: this.swap.swap,\n container: this.getContent().getInfo(e),\n outline: !isNullOrUndefined(e),\n swapInfo: this.swap\n });\n var _a = this.getContent().matrix.current, rowIndex = _a[0], cellIndex = _a[1];\n this.prevIndexes = { rowIndex: rowIndex, cellIndex: cellIndex };\n this.focusedColumnUid = this.parent.getColumnByIndex(cellIndex).uid;\n this.focusByClick = false;\n };\n FocusStrategy.prototype.refreshMatrix = function (content) {\n var _this = this;\n return function (e) {\n if (content && (e.args && e.args.isFrozen) && !_this.fContent) {\n _this.fContent = new FixedContentFocus(_this.parent);\n }\n else if (content && !_this.frContent && (e.args && e.args.renderFrozenRightContent)) {\n _this.frContent = new FixedRightContentFocus(_this.parent);\n }\n else if (content && !_this.content) {\n _this.content = new ContentFocus(_this.parent);\n }\n if (!content && (e.args && e.args.isFrozen) && !_this.fHeader) {\n _this.fHeader = new FixedHeaderFocus(_this.parent);\n }\n else if (!content && (e.args && e.args.renderFrozenRightContent) && !_this.frHeader) {\n _this.frHeader = new FixedRightHeaderFocus(_this.parent);\n }\n else if (!content && !_this.header) {\n _this.header = new HeaderFocus(_this.parent);\n }\n var cFocus = content ? (e.args && e.args.isFrozen) ? _this.fContent : (e.args && e.args.renderFrozenRightContent)\n ? _this.frContent : _this.content : (e.args && e.args.isFrozen) ? _this.fHeader : (e.args && e.args.renderFrozenRightContent)\n ? _this.frHeader : _this.header;\n var rows = content ? e.rows.slice(_this.parent.frozenRows) : e.rows;\n var updateRow = content ? e.rows.slice(0, _this.parent.frozenRows) : e.rows;\n if (_this.parent.isCollapseStateEnabled() && content) {\n rows = rows.filter(function (x) { return x.visible !== false; });\n }\n var isRowTemplate = !isNullOrUndefined(_this.parent.rowTemplate);\n var matrix = cFocus.matrix.generate(updateRow, cFocus.selector, isRowTemplate);\n if (e.name === 'batchAdd' && _this.parent.isFrozenGrid()) {\n var mRows = _this.parent.getMovableRowsObject().slice(_this.parent.frozenRows);\n var newMovableRows = mRows.map(function (row) { return row.clone(); });\n var newFrozenRows = rows.map(function (row) { return row.clone(); });\n _this.fContent.matrix.generate(newFrozenRows, _this.fContent.selector, isRowTemplate);\n _this.content.matrix.generate(newMovableRows, _this.content.selector, isRowTemplate);\n if (_this.parent.getFrozenMode() === literals.leftRight) {\n var frRows = _this.parent.getFrozenRightRowsObject().slice(_this.parent.frozenRows);\n var newfrRows = frRows.map(function (row) { return row.clone(); });\n _this.frContent.matrix.generate(newfrRows, _this.frContent.selector, isRowTemplate);\n }\n }\n else {\n cFocus.matrix.generate(rows, cFocus.selector, isRowTemplate);\n }\n if (!(_this.parent.isFrozenGrid() && ((e.args && (e.args.requestType === 'sorting'\n || e.args.requestType === 'batchsave' || e.args.requestType === 'paging'))\n || e.name === 'batchAdd' || e.name === 'batchCancel'))) {\n cFocus.generateRows(updateRow, {\n matrix: matrix, handlerInstance: (e.args && e.args.isFrozen) ? _this.fHeader\n : (e.args && e.args.renderFrozenRightContent) ? _this.frHeader : _this.header\n });\n }\n if (!Browser.isDevice && e && e.args) {\n if (!_this.focusByClick && e.args.requestType === 'paging' && !_this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n _this.skipFocus = false;\n _this.parent.element.focus();\n }\n if (e.args.requestType === 'grouping') {\n _this.skipFocus = true;\n }\n }\n if (e && e.args && e.args.requestType === 'virtualscroll') {\n if (_this.currentInfo.uid) {\n var index_1;\n var bool = e.rows.some(function (row, i) {\n index_1 = i;\n return row.uid === _this.currentInfo.uid;\n });\n if (bool) {\n _this.content.matrix.current[0] = index_1;\n _this.content.matrix.current[1] = _this.parent.getColumnIndexByUid(_this.focusedColumnUid) || 0;\n var focusElement = _this.getContent().getFocusInfo().elementToFocus;\n if (focusElement) {\n var cellPosition = focusElement.getBoundingClientRect();\n var gridPosition = _this.parent.element.getBoundingClientRect();\n if (cellPosition.top >= 0 && cellPosition.left >= 0 &&\n cellPosition.right <= Math.min(gridPosition.right, window.innerWidth ||\n document.documentElement.clientWidth) &&\n cellPosition.bottom <= Math.min(gridPosition.bottom, window.innerHeight ||\n document.documentElement.clientHeight)) {\n _this.isVirtualScroll = true;\n _this.focus();\n }\n }\n }\n }\n else if (e.args.focusElement && e.args.focusElement.classList.contains('e-filtertext')) {\n var focusElement = _this.parent.element.querySelector('#' + e.args.focusElement.id);\n if (focusElement) {\n focusElement.focus();\n }\n }\n }\n if (e && e.args && e.args.requestType === 'infiniteScroll') {\n _this.isInfiniteScroll = true;\n }\n };\n };\n FocusStrategy.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(this.parent.element, 'mousedown', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'touchstart', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'focus', this.onFocus, this);\n this.parent.element.addEventListener('focus', this.passiveHandler = function (e) { return _this.passiveFocus(e); }, true);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n this.evtHandlers = [{ event: event.keyPressed, handler: this.onKeyPress },\n { event: event.click, handler: this.onClick },\n { event: event.contentReady, handler: this.refMatrix },\n { event: event.partialRefresh, handler: this.refMatrix },\n { event: event.refreshExpandandCollapse, handler: this.refMatrix },\n { event: event.headerRefreshed, handler: this.refreshMatrix() },\n { event: event.closeEdit, handler: this.restoreFocus },\n { event: event.restoreFocus, handler: this.restoreFocus },\n { event: 'start-edit', handler: this.clearIndicator },\n { event: 'start-add', handler: this.clearIndicator },\n { event: 'sorting-complete', handler: this.restoreFocus },\n { event: 'filtering-complete', handler: this.filterfocus },\n { event: 'grouping-complete', handler: this.restoreFocusWithAction },\n { event: 'ungrouping-complete', handler: this.restoreFocusWithAction },\n { event: event.batchAdd, handler: this.refMatrix },\n { event: event.batchCancel, handler: this.refMatrix },\n { event: event.batchDelete, handler: this.refMatrix },\n { event: event.detailDataBound, handler: this.refMatrix },\n { event: event.onEmpty, handler: this.refMatrix },\n { event: event.cellFocused, handler: this.internalCellFocus }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n FocusStrategy.prototype.filterfocus = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n this.restoreFocus();\n }\n };\n FocusStrategy.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, 'mousedown', this.focusCheck);\n EventHandler.remove(this.parent.element, 'touchstart', this.focusCheck);\n EventHandler.remove(this.parent.element, 'focus', this.onFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n this.parent.element.removeEventListener('focus', this.passiveHandler, true);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n FocusStrategy.prototype.destroy = function () {\n this.removeEventListener();\n };\n FocusStrategy.prototype.restoreFocus = function () {\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && (groupModule.groupSortFocus || groupModule.groupTextFocus)) {\n groupModule.groupSortFocus = false;\n groupModule.groupTextFocus = false;\n return;\n }\n this.firstHeaderCellClick = true;\n this.addFocus(this.getContent().getFocusInfo());\n };\n FocusStrategy.prototype.restoreFocusWithAction = function (e) {\n if (!this.parent.enableInfiniteScrolling) {\n var matrix = this.getContent().matrix;\n var current = matrix.current;\n switch (e.requestType) {\n case 'grouping':\n case 'ungrouping':\n current[1] = current.length &&\n !this.parent.groupSettings.showGroupedColumn && !isNullOrUndefined(matrix.matrix[current[0]]) ?\n matrix.matrix[current[0]].indexOf(1) : e.requestType === 'grouping' ? current[1] + 1 : current[1] - 1;\n break;\n }\n this.getContent().matrix.current = current;\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && groupModule.groupCancelFocus) {\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length) {\n if (focusableGroupedItems[0].parentElement.getAttribute('ej-mappingname') === e.columnName) {\n focusableGroupedItems[3].focus();\n }\n else {\n focusableGroupedItems[0].focus();\n }\n }\n else {\n groupModule.element.focus();\n }\n groupModule.groupCancelFocus = false;\n return;\n }\n this.addFocus(this.getContent().getFocusInfo());\n }\n };\n FocusStrategy.prototype.clearOutline = function () {\n this.getContent().matrix.current = this.getContent().matrix.get(0, -1, [0, 1], 'downArrow', this.getContent().validator());\n this.clearIndicator();\n };\n FocusStrategy.prototype.clearIndicator = function () {\n if (!this.currentInfo.element || !this.currentInfo.elementToFocus) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focus', 'e-focused']);\n };\n FocusStrategy.prototype.getPrevIndexes = function () {\n var forget = this.forget;\n this.forget = false;\n return forget || !Object.keys(this.prevIndexes).length ? { rowIndex: null, cellIndex: null } : this.prevIndexes;\n };\n FocusStrategy.prototype.forgetPrevious = function () {\n this.forget = true;\n };\n FocusStrategy.prototype.setActiveByKey = function (action, active) {\n var _this = this;\n if (!this.parent.isFrozenGrid() && this.parent.frozenRows === 0) {\n return;\n }\n // eslint-disable-next-line prefer-const\n var info;\n var actions = {\n 'home': function () { return ({ toHeader: !info.isContent, toFrozen: true }); },\n 'end': function () { return ({ toHeader: !info.isContent, toFrozen: false }); },\n 'ctrlHome': function () { return ({ toHeader: true, toFrozen: _this.parent.isFrozenGrid() }); },\n 'ctrlEnd': function () { return ({ toHeader: false, toFrozen: false }); }\n };\n if (!(action in actions)) {\n return;\n }\n info = active.getInfo();\n var swap = actions[\"\" + action]();\n this.setActive(!swap.toHeader, swap.toFrozen);\n this.getContent().matrix.current = active.matrix.current;\n };\n FocusStrategy.prototype.internalCellFocus = function (e) {\n if (!(e.byKey && e.container.isContent && e.keyArgs.action === 'enter'\n && (e.parent.classList.contains('e-detailcell') ||\n e.parent.classList.contains('e-unboundcell')))) {\n return;\n }\n this.clearIndicator();\n var focusEle = this.getContent().getFocusable(this.getFocusedElement());\n this.setFocusedElement(focusEle);\n this.currentInfo.skipAction = true;\n };\n return FocusStrategy;\n}());\nexport { FocusStrategy };\n/**\n * Create matrix from row collection which act as mental model for cell navigation\n *\n * @hidden\n */\nvar Matrix = /** @class */ (function () {\n function Matrix() {\n this.matrix = [];\n this.current = [];\n }\n Matrix.prototype.set = function (rowIndex, columnIndex, allow) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.columns));\n this.matrix[parseInt(rowIndex.toString(), 10)] = this.matrix[parseInt(rowIndex.toString(), 10)] || [];\n this.matrix[parseInt(rowIndex.toString(), 10)][parseInt(columnIndex.toString(), 10)] = allow ? 1 : 0;\n };\n Matrix.prototype.get = function (rowIndex, columnIndex, navigator, action, validator) {\n var tmp = columnIndex;\n if (rowIndex + navigator[0] < 0) {\n return [rowIndex, columnIndex];\n }\n rowIndex = Math.max(0, Math.min(rowIndex + navigator[0], this.rows));\n var emptyTable = true;\n if (isNullOrUndefined(this.matrix[parseInt(rowIndex.toString(), 10)])) {\n return null;\n }\n columnIndex = Math.max(0, Math.min(columnIndex + navigator[1], this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n if (tmp + navigator[1] > this.matrix[parseInt(rowIndex.toString(), 10)].length - 1\n && validator(rowIndex, columnIndex, action)) {\n return [rowIndex, tmp];\n }\n var first = this.first(this.matrix[parseInt(rowIndex.toString(), 10)], columnIndex, navigator, true, action);\n columnIndex = first === null ? tmp : first;\n var val = getValue(rowIndex + \".\" + columnIndex, this.matrix);\n if (rowIndex === this.rows && (action === 'downArrow' || action === 'enter')) {\n navigator[0] = -1;\n }\n if (first === null) {\n for (var i = 0; i < this.rows; i++) {\n if (this.matrix[parseInt(i.toString(), 10)].some(function (v) { return v === 1; })) {\n emptyTable = false;\n break;\n }\n }\n if (emptyTable) {\n rowIndex = this.current.length ? this.current[0] : 0;\n return [rowIndex, columnIndex];\n }\n }\n return this.inValid(val) || !validator(rowIndex, columnIndex, action) ?\n this.get(rowIndex, tmp, navigator, action, validator) : [rowIndex, columnIndex];\n };\n Matrix.prototype.first = function (vector, index, navigator, moveTo, action) {\n if (((index < 0 || index === vector.length) && this.inValid(vector[parseInt(index.toString(), 10)])\n && (action !== 'upArrow' && action !== 'downArrow')) || !vector.some(function (v) { return v === 1; })) {\n return null;\n }\n return !this.inValid(vector[parseInt(index.toString(), 10)]) ? index :\n this.first(vector, (['upArrow', 'downArrow', 'shiftUp', 'shiftDown'].indexOf(action) !== -1) ? moveTo ? 0 : ++index : index + navigator[1], navigator, false, action);\n };\n Matrix.prototype.select = function (rowIndex, columnIndex) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n this.current = [rowIndex, columnIndex];\n };\n Matrix.prototype.generate = function (rows, selector, isRowTemplate) {\n this.rows = rows.length - 1;\n this.matrix = [];\n for (var i = 0; i < rows.length; i++) {\n var cells = rows[parseInt(i.toString(), 10)].cells.filter(function (c) { return c.isSpanned !== true; });\n this.columns = Math.max(cells.length - 1, this.columns | 0);\n var incrementNumber = 0;\n for (var j = 0; j < cells.length; j++) {\n if (cells[parseInt(j.toString(), 10)].column && cells[parseInt(j.toString(), 10)].column.columns) {\n incrementNumber = this.columnsCount(cells[parseInt(j.toString(), 10)].column.columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n this.set(i, j, rows[parseInt(i.toString(), 10)].visible === false ?\n false : selector(rows[parseInt(i.toString(), 10)], cells[parseInt(j.toString(), 10)], isRowTemplate));\n }\n this.columns = Math.max(incrementNumber - 1, this.columns | 0);\n }\n return this.matrix;\n };\n Matrix.prototype.columnsCount = function (rowColumns, currentColumnCount) {\n var columns = rowColumns;\n var incrementNumber = currentColumnCount;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.columnsCount(columns[parseInt(i.toString(), 10)].columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n }\n return incrementNumber;\n };\n Matrix.prototype.inValid = function (value) {\n return value === 0 || value === undefined;\n };\n return Matrix;\n}());\nexport { Matrix };\n/**\n * @hidden\n */\nvar ContentFocus = /** @class */ (function () {\n function ContentFocus(parent) {\n var _this = this;\n this.matrix = new Matrix();\n this.lastIdxCell = false;\n this.parent = parent;\n this.keyActions = {\n 'rightArrow': [0, 1],\n 'tab': [0, 1],\n 'leftArrow': [0, -1],\n 'shiftTab': [0, -1],\n 'upArrow': [-1, 0],\n 'downArrow': [1, 0],\n 'shiftUp': [-1, 0],\n 'shiftDown': [1, 0],\n 'shiftRight': [0, 1],\n 'shiftLeft': [0, -1],\n 'enter': [1, 0],\n 'shiftEnter': [-1, 0]\n };\n this.indexesByKey = function (action) {\n var opt = {\n 'home': [_this.matrix.current[0], -1, 0, 1],\n 'end': [_this.matrix.current[0], _this.matrix.columns + 1, 0, -1],\n 'ctrlHome': [0, -1, 0, 1],\n 'ctrlEnd': [_this.matrix.rows, _this.matrix.columns + 1, 0, -1]\n };\n return opt[\"\" + action] || null;\n };\n }\n ContentFocus.prototype.getTable = function () {\n return (this.parent.isFrozenGrid() ?\n this.parent.getContent().querySelector('.e-movablecontent .e-table') :\n this.parent.getContentTable());\n };\n ContentFocus.prototype.onKeyPress = function (e) {\n var navigator = this.keyActions[e.action];\n var current = this.getCurrentFromAction(e.action, navigator, e.action in this.keyActions, e);\n if (!current) {\n return;\n }\n if (((['tab', 'shiftTab'].indexOf(e.action) > -1 && this.matrix.current || []).toString() === current.toString())\n || (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus()\n && this.matrix.current[0] === this.matrix.rows && ((this.parent.editSettings.mode === 'Batch'\n && this.parent.editSettings.allowAdding && e.keyCode === 40) || (e.keyCode === 40)))) {\n if (current.toString() === [this.matrix.rows, this.matrix.columns].toString() ||\n current.toString() === [0, 0].toString() || (this.matrix.current[0] === this.matrix.rows &&\n this.matrix.current.toString() === current.toString()) || (this.parent.allowGrouping &&\n this.parent.infiniteScrollSettings.enableCache && current.toString() === [0, 1].toString())) {\n return false;\n }\n else {\n current = this.editNextRow(current[0], current[1], e.action);\n }\n }\n this.matrix.select(current[0], current[1]);\n };\n ContentFocus.prototype.editNextRow = function (rowIndex, cellIndex, action) {\n var gObj = this.parent;\n var editNextRow = gObj.editSettings.allowNextRowEdit && (gObj.isEdit || gObj.isLastCellPrimaryKey);\n var visibleIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[0].field);\n var cell = this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n if (action === 'tab' && editNextRow) {\n rowIndex++;\n var index = (this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-indentcell').length +\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-detailrowcollapse').length);\n cellIndex = visibleIndex + index;\n }\n if (action === 'shiftTab' && editNextRow) {\n rowIndex--;\n cellIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[gObj.getVisibleColumns().length - 1].field);\n }\n return !cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-headercell') &&\n !cell.classList.contains('e-groupcaption') && !cell.classList.contains('e-filterbarcell') ?\n this.editNextRow(rowIndex, cellIndex, action) : [rowIndex, cellIndex];\n };\n ContentFocus.prototype.getCurrentFromAction = function (action, navigator, isPresent, e) {\n if (navigator === void 0) { navigator = [0, 0]; }\n if (!isPresent && !this.indexesByKey(action) || (this.matrix.current.length === 0)) {\n return null;\n }\n if (!this.shouldFocusChange(e)) {\n return this.matrix.current;\n }\n // eslint-disable-next-line\n var _a = this.indexesByKey(action) || this.matrix.current.concat(navigator), rowIndex = _a[0], cellIndex = _a[1], rN = _a[2], cN = _a[3];\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && this.parent.aggregates.length && action === 'enter') {\n for (var i = rowIndex; i < this.matrix.matrix.length; i++) {\n var row = this.getTable().rows[i + 1];\n if (row && row.cells[parseInt(cellIndex.toString(), 10)] && row.cells[parseInt(cellIndex.toString(), 10)].classList.contains('e-rowcell')) {\n return [i + 1, cellIndex];\n }\n if (i === this.matrix.matrix.length - 1) {\n return [rowIndex, cellIndex];\n }\n }\n }\n if (action === 'ctrlEnd' || action === 'end') {\n var lastContentCellIndex = [this.matrix.matrix.length - 1,\n this.matrix.matrix[this.matrix.matrix.length - 1].length - 1];\n if (action === 'end') {\n lastContentCellIndex = [rowIndex, this.matrix.matrix[parseInt(rowIndex.toString(), 10)].length - 1];\n }\n if (this.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.matrix.matrix, lastContentCellIndex, false);\n }\n rowIndex = lastContentCellIndex[0];\n cellIndex = lastContentCellIndex[1] + 1;\n }\n var current = this.matrix.get(rowIndex, cellIndex, [rN, cN], action, this.validator());\n return current;\n };\n ContentFocus.prototype.onClick = function (e, force) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains(literals.rowCell) ? target : closest(target, 'td'));\n target = target ? target : closest(e.target, 'td.e-detailrowcollapse')\n || closest(e.target, 'td.e-detailrowexpand');\n target = closest(e.target, 'td.e-detailcell') ?\n isNullOrUndefined(closest(closest(e.target, '.e-grid'), 'td.e-detailcell')) ? null : target : target;\n target = target && closest(target, 'table').classList.contains(literals.table) ? target : null;\n if (!target) {\n return false;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var _b = this.matrix.current, oRowIndex = _b[0], oCellIndex = _b[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val) || (!force && oRowIndex === rowIndex && oCellIndex === cellIndex) ||\n (!parentsUntil(e.target, literals.rowCell) && !parentsUntil(e.target, 'e-groupcaption')\n && !parentsUntil(e.target, 'e-recordpluscollapse') && !parentsUntil(e.target, 'e-recordplusexpand')\n && !parentsUntil(e.target, 'e-detailrowcollapse') && !parentsUntil(e.target, 'e-detailrowexpand')\n && !parentsUntil(e.target, 'e-templatecell'))) {\n return false;\n }\n this.matrix.select(rowIndex, cellIndex);\n };\n ContentFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n this.matrix.current = [rowIndex, cellIndex];\n info.element = !isNullOrUndefined(this.getTable().rows[parseInt(rowIndex.toString(), 10)]) ?\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)] : null;\n if (!info.element) {\n return info;\n }\n info.elementToFocus = !info.element.classList.contains('e-unboundcell') && !info.element.classList.contains('e-detailcell')\n ? this.getFocusable(info.element) : info.element;\n info.elementToFocus = info.element.classList.contains('e-detailcell') && info.element.querySelector('.e-childgrid')\n ? info.element.querySelector('.e-childgrid') : info.elementToFocus;\n info.outline = true;\n info.uid = info.element.parentElement.getAttribute('data-uid');\n return info;\n };\n ContentFocus.prototype.getFocusable = function (element) {\n var query = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n var isTemplate = !isNullOrUndefined(closest(element, '.e-templatecell'));\n if (this.parent.isEdit) {\n query = 'input:not([type=\"hidden\"]), select:not([aria-hidden=\"true\"]), textarea';\n }\n var child = [].slice.call(element.querySelectorAll(query));\n /* Select the first focusable child element\n * if no child found then select the cell itself.\n * if Grid is in editable state, check for editable control inside child.\n */\n return child.length ? isTemplate && child.length > 1 ? this.target ? this.target : element : child[0] : element;\n };\n ContentFocus.prototype.selector = function (row, cell, isRowTemplate) {\n var types = [CellType.Expand, CellType.GroupCaption, CellType.CaptionSummary, CellType.GroupSummary];\n return ((row.isDataRow && cell.visible && (cell.isDataCell || cell.isTemplate))\n || (row.isDataRow && cell.cellType === CellType.DetailExpand && isNullOrUndefined(cell.visible))\n || (!row.isDataRow && types.indexOf(cell.cellType) > -1\n && !((cell.cellType === CellType.GroupSummary || cell.cellType === CellType.CaptionSummary)\n && !(cell.isDataCell && cell.visible)))\n || (cell.column && cell.visible && cell.column.type === 'checkbox')\n || (cell.cellType === CellType.CommandColumn)\n || (row.isDataRow && isRowTemplate))\n && !(row.edit === 'delete' && row.isDirty);\n };\n ContentFocus.prototype.nextRowFocusValidate = function (index) {\n var lastIndex = index;\n for (var i = index, len = this.matrix.rows; i <= len; i++) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index + 1;\n }\n else {\n return index;\n }\n }\n this.lastIdxCell = true;\n return lastIndex;\n };\n ContentFocus.prototype.previousRowFocusValidate = function (index) {\n var firstIndex = index;\n for (var i = index, len = 0; i >= len; i--) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index - 1;\n if (index < 0) {\n this.lastIdxCell = true;\n return firstIndex;\n }\n }\n else {\n return index;\n }\n }\n return firstIndex;\n };\n ContentFocus.prototype.jump = function (action, current) {\n var frozenSwap = (this.parent.getFrozenLeftCount() &&\n ((action === 'leftArrow' || action === 'shiftTab') && current[1] === 0))\n || (current[0] < this.matrix.matrix.length - 1 && action === 'tab' && this.parent.getFrozenMode() === 'Left'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var right = ((action === 'rightArrow' || action === 'tab')\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && this.parent.getFrozenMode() === 'Right'\n && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n var frSwap = this.parent.getFrozenMode() === literals.leftRight && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n this.lastIdxCell = false;\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var headerSwap = ((action === 'upArrow' || enterFrozen) && current[0] === 0)\n || (action === 'shiftTab' && this.parent.getFrozenMode() === 'Right' && current[0] === 0\n && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n if (!this.parent.isFrozenGrid() && action === 'tab' &&\n current[1] === this.matrix.matrix[current[0]].lastIndexOf(1) && this.matrix.matrix.length - 1 !== current[0]) {\n this.matrix.current[0] = this.nextRowFocusValidate(this.matrix.current[0] + 1);\n this.matrix.current[1] = -1;\n frozenSwap = this.parent.isFrozenGrid();\n }\n if (!this.parent.isFrozenGrid() && action === 'shiftTab' &&\n current[0] !== 0 && this.matrix.matrix[current[0]].indexOf(1) === current[1]) {\n this.matrix.current[0] = this.previousRowFocusValidate(this.matrix.current[0] - 1);\n this.matrix.current[1] = this.matrix.matrix[current[0]].length;\n }\n var isHeaderFocus = false;\n var row = document.activeElement.parentElement;\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && row.classList.contains(literals.row)) {\n var rowIndex = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n isHeaderFocus = rowIndex > 0;\n }\n if (action === 'shiftTab' && this.parent.getFrozenMode() === 'Right' && current[0] === 0\n && current[1] === this.matrix.matrix[current[0]].indexOf(1)) {\n this.matrix.current[0] = -1;\n }\n var info = {\n swap: !isHeaderFocus ? ((action === 'upArrow' || enterFrozen) && current[0] === 0) || frozenSwap || frSwap : false,\n toHeader: headerSwap,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n return info;\n };\n ContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight) {\n if (action === 'leftArrow' || action === 'shiftTab') {\n current[0] = previous[0];\n current[1] = this.matrix.matrix[current[0]].length;\n }\n if (this.parent.getFrozenMode() === literals.leftRight && (action === 'rightArrow' || action === 'tab')) {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (this.parent.getFrozenMode() === 'Right' && action === 'tab') {\n current[0] = previous[0] + 1;\n current[1] = -1;\n }\n }\n else if (action === 'rightArrow' || action === 'tab') {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current[0] = -1;\n current[1] = previous[1];\n }\n if (action === 'shiftTab' && this.parent.getFrozenMode() === 'Left') {\n current[0] = previous[0] - 1;\n current[1] = this.matrix.matrix[current[0]].length;\n }\n return current;\n };\n ContentFocus.prototype.generateRows = function (rows, optionals) {\n var _a;\n var matrix = optionals.matrix, handlerInstance = optionals.handlerInstance;\n var len = handlerInstance.matrix.matrix.length;\n var defaultLen = this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' ? len + 1 : len;\n handlerInstance.matrix.matrix = handlerInstance.matrix.matrix.slice(0, defaultLen); //Header matrix update.\n handlerInstance.matrix.rows = defaultLen;\n (_a = handlerInstance.matrix.matrix).push.apply(_a, matrix);\n handlerInstance.matrix.rows += matrix.length;\n };\n ContentFocus.prototype.getInfo = function (e) {\n var info = this.getFocusInfo();\n var _a = this.matrix.current, rIndex = _a[0], cIndex = _a[1];\n var isData = info.element.classList.contains(literals.rowCell);\n var isSelectable = isData || (e && e.action !== 'enter' && (info.element.classList.contains('e-detailrowcollapse')\n || info.element.classList.contains('e-detailrowexpand')));\n // eslint-disable-next-line\n var _b = [Math.min(parseInt(info.element.parentElement.getAttribute(literals.dataRowIndex), 10), rIndex),\n Math.min(parseInt(info.element.getAttribute(literals.dataColIndex), 10), cIndex)], rowIndex = _b[0], cellIndex = _b[1];\n if (this.parent.allowGrouping && this.parent.groupSettings.enableLazyLoading && isData) {\n rowIndex = this.parent.getDataRows().indexOf(info.element.parentElement);\n }\n return { isContent: true, isDataCell: isData, indexes: [rowIndex, cellIndex], isSelectable: isSelectable };\n };\n ContentFocus.prototype.validator = function () {\n var table = this.getTable();\n return function (rowIndex, cellIndex, action) {\n if (!isNullOrUndefined(table.rows[parseInt(rowIndex.toString(), 10)])) {\n var cell = void 0;\n cellIndex = table.querySelector('.e-emptyrow') ? 0 : cellIndex;\n if (table.rows[parseInt(rowIndex.toString(), 10)].cells[0].classList.contains('e-editcell')) {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[0].querySelectorAll('td')[parseInt(cellIndex.toString(), 10)];\n }\n else {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n }\n var isCellWidth = cell.getBoundingClientRect().width !== 0;\n if (action === 'enter' || action === 'shiftEnter') {\n return isCellWidth && cell.classList.contains(literals.rowCell);\n }\n if ((action === 'shiftUp' || action === 'shiftDown') && cell.classList.contains(literals.rowCell)) {\n return isCellWidth;\n }\n else if (action !== 'shiftUp' && action !== 'shiftDown') {\n return isCellWidth;\n }\n }\n return false;\n };\n };\n ContentFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, _b = _a[0], rIndex = _b === void 0 ? -1 : _b, _c = _a[1], cIndex = _c === void 0 ? -1 : _c;\n if (rIndex < 0 || cIndex < 0) {\n return true;\n }\n var cell = getValue(rIndex + \".cells.\" + cIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'shiftEnter' ?\n cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-unboundcell')\n || cell.classList.contains('e-editedbatchcell') && !cell.classList.contains('e-detailcell') : true;\n };\n ContentFocus.prototype.getGridSeletion = function () {\n return this.parent.allowSelection && this.parent.selectionSettings.allowColumnSelection;\n };\n return ContentFocus;\n}());\nexport { ContentFocus };\n/**\n * @hidden\n */\nvar HeaderFocus = /** @class */ (function (_super) {\n __extends(HeaderFocus, _super);\n function HeaderFocus(parent) {\n return _super.call(this, parent) || this;\n }\n HeaderFocus.prototype.getTable = function () {\n return (this.parent.isFrozenGrid() ?\n this.parent.getHeaderContent().querySelector('.e-movableheader .e-table') :\n this.parent.getHeaderTable());\n };\n HeaderFocus.prototype.onClick = function (e) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains('e-headercell') ? target : closest(target, 'th'));\n if (!target && this.parent.frozenRows !== 0) {\n target = (e.target.classList.contains(literals.rowCell) ? e.target :\n closest(e.target, 'td'));\n }\n if (e.target.classList.contains('e-columnheader') ||\n e.target.querySelector('.e-stackedheadercell')) {\n return false;\n }\n if (!target) {\n return;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val)) {\n return false;\n }\n this.matrix.select(target.parentElement.rowIndex, target.cellIndex);\n };\n HeaderFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n info.element = this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n if (!isNullOrUndefined(info.element)) {\n info.elementToFocus = this.getFocusable(info.element);\n info.outline = !info.element.classList.contains('e-filterbarcell');\n }\n return info;\n };\n HeaderFocus.prototype.selector = function (row, cell) {\n return (cell.visible && (cell.column.field !== undefined || cell.isTemplate || !isNullOrUndefined(cell.column.template)\n || !isNullOrUndefined(cell.column.commands))) || cell.column.type === 'checkbox' || cell.cellType === CellType.StackedHeader;\n };\n HeaderFocus.prototype.jump = function (action, current) {\n var frozenSwap = (this.parent.getFrozenLeftCount() &&\n (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') && (current[1] === 0\n || current[1] === this.matrix.matrix[current[0]].indexOf(1))) || (this.parent.getFrozenMode() === 'Left' && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var right = ((action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion())\n || action === 'tab') && (current[1] === this.matrix.columns || current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)))\n || (current[0] > 0 && action === 'shiftTab' && this.parent.getFrozenMode() === 'Right'\n && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n var frSwap = this.parent.getFrozenMode() === literals.leftRight && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var isLastCell;\n var lastRow;\n var headerSwap = frozenSwap && !(this.parent.getFrozenMode() === 'Left' && action === 'tab'\n && current[0] === this.matrix.matrix.length - 1) || frSwap;\n var fMatrix = this.parent.focusModule.fHeader && this.parent.focusModule.fHeader.matrix.matrix;\n var isPresent = fMatrix && !isNullOrUndefined(fMatrix[current[0]]);\n if (this.parent.enableHeaderFocus && action === 'tab') {\n lastRow = this.matrix.matrix.length - 1 === current[0];\n isLastCell = current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n if (isLastCell) {\n if (!lastRow) {\n this.matrix.current[0] = this.matrix.current[0] + 1;\n }\n else {\n this.matrix.current[0] = 0;\n }\n this.matrix.current[1] = -1;\n }\n if (this.parent.isFrozenGrid() && lastRow && isLastCell) {\n frozenSwap = true;\n headerSwap = false;\n }\n }\n if (action === 'tab' && this.parent.getFrozenMode() === 'Left' && current[0] === this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return {\n swap: ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && (frozenSwap || frSwap)) || (action === 'tab' && lastRow && isLastCell),\n toHeader: headerSwap,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n };\n HeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current1 = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight) {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current1[0] = previous[0];\n current1[1] = this.matrix.matrix[current1[0]].length;\n }\n if (this.parent.getFrozenMode() === literals.leftRight\n && (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab')) {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n }\n else if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current1[0] = this.matrix.matrix.length;\n current1[1] = previous[1];\n }\n if (this.parent.getFrozenMode() === 'Left' && action === 'shiftTab') {\n current1[0] = previous[0] === -1 ? this.matrix.matrix.length - 1 : previous[0] - 1;\n current1[1] = this.matrix.matrix[current1[0]].length;\n }\n if (this.parent.getFrozenMode() === 'Right' && action === 'tab') {\n current1[0] = previous[0] + 1;\n current1[1] = -1;\n }\n return current1;\n };\n HeaderFocus.prototype.generateRows = function (rows) {\n var length = this.matrix.matrix.length;\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar') {\n this.matrix.rows = ++this.matrix.rows;\n var cells = rows[0].cells;\n var incrementNumber = 0;\n var headerTable = this.getHeaderType() === 'FixedHeaderFocus' && this.parent.getFrozenMode() !== 'Right' ? literals.frozenLeft :\n this.getHeaderType() === 'FixedHeaderFocus' || this.getHeaderType() === 'FixedRightHeaderFocus' ? literals.frozenRight : 'movable';\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].column && cells[parseInt(i.toString(), 10)].column.columns) {\n incrementNumber = this.checkFilterColumn(cells[parseInt(i.toString(), 10)].column.columns, length, incrementNumber, headerTable);\n }\n else {\n if (!this.parent.isFrozenGrid() || (this.parent.isFrozenGrid()\n && cells[parseInt(i.toString(), 10)].column.freezeTable === headerTable)) {\n this.matrix.set(length, incrementNumber, cells[parseInt(i.toString(), 10)].visible && cells[parseInt(i.toString(), 10)].column.allowFiltering !== false);\n incrementNumber++;\n }\n }\n }\n }\n };\n HeaderFocus.prototype.checkFilterColumn = function (rowColumns, rowIndex, columnIndex, headerTable) {\n var columns = rowColumns;\n var incrementNumber = columnIndex;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.checkFilterColumn(columns[parseInt(i.toString(), 10)].columns, rowIndex, incrementNumber, headerTable);\n }\n else {\n if (!this.parent.isFrozenGrid() || (this.parent.isFrozenGrid()\n && columns[parseInt(i.toString(), 10)].freezeTable === headerTable)) {\n this.matrix.set(rowIndex, incrementNumber, columns[parseInt(i.toString(), 10)].visible && columns[parseInt(i.toString(), 10)].allowFiltering !== false);\n incrementNumber++;\n }\n }\n }\n return incrementNumber;\n };\n HeaderFocus.prototype.getInfo = function (e) {\n return extend(_super.prototype.getInfo.call(this, e), { isContent: false, isHeader: true });\n };\n HeaderFocus.prototype.validator = function () {\n return function () { return true; };\n };\n HeaderFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, rowIndex = _a[0], columnIndex = _a[1];\n if (rowIndex < 0 || columnIndex < 0) {\n return true;\n }\n var cell = getValue(rowIndex + \".cells.\" + columnIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'altDownArrow' ? !cell.classList.contains('e-headercell') : true;\n };\n HeaderFocus.prototype.getHeaderType = function () {\n return 'HeaderFocus';\n };\n return HeaderFocus;\n}(ContentFocus));\nexport { HeaderFocus };\nvar FixedContentFocus = /** @class */ (function (_super) {\n __extends(FixedContentFocus, _super);\n function FixedContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozencontent .e-table');\n };\n FixedContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = ((action === 'upArrow' || enterFrozen) && current[0] === 0)\n || (action === 'shiftTab' && this.parent.getFrozenMode() !== 'Right'\n && current[0] === 0 && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n var fSwap = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n var frSwap = action === 'shiftTab' && this.parent.getFrozenMode() === literals.leftRight\n && current[1] === this.matrix.matrix[current[0]].indexOf(1);\n if (this.parent.getFrozenMode() === 'Right') {\n var swap = toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0)\n || (action === 'tab' && current[0] < this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n return { swap: swap, toHeader: toHeader, toFrozen: fSwap };\n }\n if (action === 'shiftTab' && current[0] === 0 && current[1] === this.matrix.matrix[current[0]].indexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return {\n swap: toHeader || ((action === 'tab' || action === 'rightArrow')\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && current[1] === this.matrix.matrix[current[0]].indexOf(1)),\n toHeader: toHeader,\n toFrozen: fSwap,\n toFrozenRight: frSwap\n };\n };\n FixedContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'shiftTab') {\n current2[0] = previous[0] - 1;\n current2[1] = this.matrix.matrix[current2[0]].length;\n }\n }\n else {\n if (action === 'tab' && this.parent.enableHeaderFocus) {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'leftArrow' || action === 'shiftTab') {\n current2[0] = previous[0];\n current2[1] = this.matrix.matrix[previous[0]].length;\n }\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n if (action === 'tab' && this.parent.getFrozenMode() !== 'Right') {\n current2[0] = previous[0] + 1;\n current2[1] = -1;\n }\n return current2;\n };\n return FixedContentFocus;\n}(ContentFocus));\nexport { FixedContentFocus };\nvar FixedHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedHeaderFocus, _super);\n function FixedHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedHeaderFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var hMatrix = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = hMatrix && !isNullOrUndefined(hMatrix[current[0]]);\n if (this.parent.getFrozenMode() === 'Right') {\n var frSwap_1 = ((action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && (current[1] === 0 || current[1] === this.matrix.matrix[current[0]].indexOf(1)))\n || (current[0] < this.matrix.matrix.length - 1 && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var swap = ((action === 'downArrow' || enterFrozen || (action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frSwap_1);\n var toFrozen = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n if (action === 'tab' && current[0] === this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return { swap: swap, toHeader: frSwap_1, toFrozen: toFrozen };\n }\n var frSwap = current[0] > 0 && action === 'shiftTab' && this.parent.getFrozenMode() === literals.leftRight\n && current[1] === this.matrix.matrix[current[0]].indexOf(1);\n return {\n swap: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1 || ((action === 'rightArrow' ||\n (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n (current[1] === this.matrix.columns || current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) && isPresent)\n || (action === 'tab' && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && current[1] === this.matrix.matrix[current[0]].indexOf(1) && current[0] > 0),\n toHeader: (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n (current[1] === this.matrix.columns || current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'tab' && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && current[1] === this.matrix.matrix[current[0]].indexOf(1) && current[0] > 0),\n toFrozen: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1,\n toFrozenRight: frSwap\n };\n };\n FixedHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozenheader .e-table'));\n };\n FixedHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = -1;\n }\n if (action === 'shiftTab') {\n current3[0] = previous[0] === -1 ? this.matrix.matrix.length - 1 : previous[0] - 1;\n current3[1] = this.matrix.matrix[current3[0]].length;\n }\n }\n else {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current3[0] = previous[0];\n current3[1] = this.matrix.matrix[current3[0]].length;\n }\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n if (action === 'tab' && this.parent.getFrozenMode() !== 'Right') {\n current3[0] = previous[0] + 1;\n current3[1] = -1;\n }\n return current3;\n };\n FixedHeaderFocus.prototype.getHeaderType = function () {\n return 'FixedHeaderFocus';\n };\n return FixedHeaderFocus;\n}(HeaderFocus));\nexport { FixedHeaderFocus };\n/** @hidden */\nvar SearchBox = /** @class */ (function () {\n function SearchBox(searchBox) {\n this.searchBox = searchBox;\n }\n SearchBox.prototype.searchFocus = function (args) {\n args.target.parentElement.classList.add('e-input-focus');\n if (args.target.classList.contains('e-input') && args.target.classList.contains('e-search') && args.target.value) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.add('e-clear-icon');\n sIcon.setAttribute('title', 'Clear');\n (sIcon).style.cursor = 'pointer';\n }\n };\n SearchBox.prototype.searchBlur = function (args) {\n var relatedTarget = args.relatedTarget ? args.relatedTarget : null;\n if (relatedTarget && relatedTarget.classList.contains('e-sicon')) {\n if (relatedTarget.classList.contains('e-clear-icon')) {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n }\n else {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n if (args.target.classList.contains('e-search') && relatedTarget && !(relatedTarget.classList.contains('e-sicon e-clear-icon'))\n && !(relatedTarget.classList.contains('e-sicon'))) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.remove('e-clear-icon');\n sIcon.removeAttribute('title');\n sIcon.style.cursor = 'default';\n }\n };\n SearchBox.prototype.wireEvent = function () {\n if (this.searchBox) {\n EventHandler.add(this.searchBox, 'focus', this.searchFocus, this);\n EventHandler.add(this.searchBox, 'blur', this.searchBlur, this);\n }\n };\n SearchBox.prototype.unWireEvent = function () {\n if (this.searchBox) {\n EventHandler.remove(this.searchBox, 'focus', this.searchFocus);\n EventHandler.remove(this.searchBox, 'blur', this.searchBlur);\n }\n };\n return SearchBox;\n}());\nexport { SearchBox };\nvar FixedRightContentFocus = /** @class */ (function (_super) {\n __extends(FixedRightContentFocus, _super);\n function FixedRightContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozen-right-content .e-table');\n };\n FixedRightContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n var toFrozenSwap = this.parent.getFrozenMode() === literals.leftRight && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n return {\n swap: toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0)\n || (action === 'tab' && current[0] < this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)),\n toHeader: toHeader,\n toFrozenRight: toHeader,\n toFrozen: toFrozenSwap\n };\n };\n FixedRightContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n if (action === 'shiftTab') {\n current2[0] = previous[0] - 1;\n current2[1] = this.matrix.matrix[current2[0]].length;\n }\n return current2;\n };\n return FixedRightContentFocus;\n}(ContentFocus));\nexport { FixedRightContentFocus };\nvar FixedRightHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedRightHeaderFocus, _super);\n function FixedRightHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightHeaderFocus.prototype.jump = function (action, current) {\n var headerMat = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = headerMat && !isNullOrUndefined(headerMat[current[0]]);\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var frozenSwap = (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && (current[1] === 0 || current[1] === this.matrix.matrix[current[0]].indexOf(1))\n || (current[0] < this.matrix.matrix.length - 1 && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var swap = ((action === 'downArrow' || enterFrozen || (action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frozenSwap);\n var fSwap = action === 'tab' && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n var frSwap = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n if (action === 'tab' && current[0] === this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return { swap: swap, toHeader: frozenSwap, toFrozen: fSwap, toFrozenRight: frSwap };\n };\n FixedRightHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozen-right-header .e-table'));\n };\n FixedRightHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n if (action === 'shiftTab') {\n current3[0] = previous[0] === -1 ? this.matrix.matrix.length - 1 : previous[0] - 1;\n current3[1] = this.matrix.matrix[current3[0]].length;\n }\n return current3;\n };\n FixedRightHeaderFocus.prototype.getHeaderType = function () {\n return 'FixedRightHeaderFocus';\n };\n return FixedRightHeaderFocus;\n}(HeaderFocus));\nexport { FixedRightHeaderFocus };\n","import { isNullOrUndefined, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Row } from '../models/row';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\nimport { getUid } from '../base/util';\nimport { getForeignData } from '../../grid/base/util';\nimport * as events from '../base/constant';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar RowModelGenerator = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function RowModelGenerator(parent) {\n this.parent = parent;\n }\n RowModelGenerator.prototype.generateRows = function (data, args) {\n var rows = [];\n var startIndex = this.parent.enableVirtualization && args ? args.startIndex : 0;\n startIndex = this.parent.enableInfiniteScrolling && args ? this.getInfiniteIndex(args) : startIndex;\n if (this.parent.enableImmutableMode && args && args.startIndex) {\n startIndex = args.startIndex;\n }\n for (var i = 0, len = Object.keys(data).length; i < len; i++, startIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], startIndex);\n }\n return rows;\n };\n RowModelGenerator.prototype.ensureColumns = function () {\n //TODO: generate dummy column for group, detail here;\n var cols = [];\n if (this.parent.detailTemplate || this.parent.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n cols.push(this.generateCell(args, null, CellType.DetailExpand));\n }\n if (this.parent.isRowDragable()) {\n cols.push(this.generateCell({}, null, CellType.RowDragIcon));\n }\n return cols;\n };\n RowModelGenerator.prototype.generateRow = function (data, index, cssClass, indent, pid, tIndex, parentUid) {\n var options = {};\n options.foreignKeyData = {};\n options.uid = getUid('grid-row');\n options.data = data;\n options.index = index;\n options.indent = indent;\n options.tIndex = tIndex;\n options.isDataRow = true;\n options.parentGid = pid;\n options.parentUid = parentUid;\n if (this.parent.isPrinting) {\n if (this.parent.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (this.parent.hierarchyPrintMode === 'Expanded' && this.parent.expandedRows && this.parent.expandedRows[parseInt(index.toString(), 10)]) {\n options.isExpand = this.parent.expandedRows[parseInt(index.toString(), 10)].isExpand;\n }\n }\n options.cssClass = cssClass;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isSelected = this.parent.getSelectedRowIndexes().indexOf(index) > -1;\n this.refreshForeignKeyRow(options);\n var cells = this.ensureColumns();\n var row = new Row(options, this.parent);\n row.cells = this.parent.getFrozenMode() === 'Right' ? this.generateCells(options).concat(cells)\n : cells.concat(this.generateCells(options));\n return row;\n };\n RowModelGenerator.prototype.refreshForeignKeyRow = function (options) {\n var foreignKeyColumns = this.parent.getForeignKeyColumns();\n for (var i = 0; i < foreignKeyColumns.length; i++) {\n setValue(foreignKeyColumns[parseInt(i.toString(), 10)].field, getForeignData(foreignKeyColumns[parseInt(i.toString(), 10)], options.data), options.foreignKeyData);\n }\n };\n RowModelGenerator.prototype.generateCells = function (options) {\n var dummies = this.parent.getColumns();\n var tmp = [];\n for (var i = 0; i < dummies.length; i++) {\n tmp.push(this.generateCell(dummies[parseInt(i.toString(), 10)], options.uid, isNullOrUndefined(dummies[parseInt(i.toString(), 10)].commands) ? undefined : CellType.CommandColumn, null, i, options.foreignKeyData));\n }\n return tmp;\n };\n /**\n *\n * @param {Column} column - Defines column details\n * @param {string} rowId - Defines row id\n * @param {CellType} cellType - Defines cell type\n * @param {number} colSpan - Defines colSpan\n * @param {number} oIndex - Defines index\n * @param {Object} foreignKeyData - Defines foreign key data\n * @returns {Cell} returns cell model\n * @hidden\n */\n RowModelGenerator.prototype.generateCell = function (column, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(column.field || column.template),\n 'isTemplate': !isNullOrUndefined(column.template),\n 'rowID': rowId,\n 'column': column,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': column.commands,\n 'isForeignKey': column.isForeignColumn && column.isForeignColumn(),\n 'foreignKeyData': column.isForeignColumn && column.isForeignColumn() && getValue(column.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n RowModelGenerator.prototype.refreshRows = function (input) {\n for (var i = 0; i < input.length; i++) {\n this.refreshForeignKeyRow(input[parseInt(i.toString(), 10)]);\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n }\n return input;\n };\n RowModelGenerator.prototype.getInfiniteIndex = function (args) {\n return args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add'\n ? (isNullOrUndefined(args.startIndex) ? args['index'] : args.startIndex) : 0;\n };\n return RowModelGenerator;\n}());\nexport { RowModelGenerator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { Column } from '../models/column';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { calculateAggregate, getUid } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\n/**\n * Summary row model generator\n *\n * @hidden\n */\nvar SummaryModelGenerator = /** @class */ (function () {\n /**\n * Constructor for Summary row model generator\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function SummaryModelGenerator(parent) {\n this.parent = parent;\n }\n SummaryModelGenerator.prototype.getData = function () {\n var _this = this;\n var rows = [];\n var row = this.parent.aggregates.slice();\n for (var i = 0; i < row.length; i++) {\n var columns = row[parseInt(i.toString(), 10)].columns.filter(function (column) {\n return !(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)\n || _this.columnSelector(column);\n });\n if (columns.length) {\n rows.push({ columns: columns });\n }\n }\n return rows;\n };\n SummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.footerTemplate !== undefined;\n };\n SummaryModelGenerator.prototype.getColumns = function (start, end) {\n var columns = [];\n if (this.parent.detailTemplate || !isNullOrUndefined(this.parent.childGrid)) {\n columns.push(new Column({}));\n }\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n columns.push(new Column({}));\n }\n }\n if (this.parent.isRowDragable() && !start) {\n columns.push(new Column({}));\n }\n columns.push.apply(columns, this.parent.getColumns());\n end = end && !start ? end + this.parent.getIndentCount() : end;\n return isNullOrUndefined(start) ? columns : columns.slice(start, end);\n };\n SummaryModelGenerator.prototype.generateRows = function (input, args, start, end, columns) {\n if (input.length === 0) {\n if (args === undefined || !args.count) {\n return [];\n }\n }\n var data = this.buildSummaryData(input, args);\n var rows = [];\n var row = this.getData();\n for (var i = 0; i < row.length; i++) {\n rows.push(this.getGeneratedRow(row[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)], args ? args.level : undefined, start, end, args ? args.parentUid : undefined, columns));\n }\n return rows;\n };\n SummaryModelGenerator.prototype.getGeneratedRow = function (summaryRow, data, raw, start, end, parentUid, columns) {\n var tmp = [];\n var indents = this.getIndentByLevel();\n var isDetailGridAlone = !isNullOrUndefined(this.parent.childGrid);\n var indentLength = !start ? this.parent.getIndentCount() : 0;\n if (this.parent.groupSettings.columns.length && this.parent.allowRowDragAndDrop) {\n indents.push('e-indentcelltop');\n }\n else if (this.parent.isRowDragable() && !start) {\n indents = ['e-indentcelltop'];\n }\n var values = columns ? columns : this.getColumns(start, end);\n for (var i = 0; i < values.length; i++) {\n tmp.push(this.getGeneratedCell(values[parseInt(i.toString(), 10)], summaryRow, i >= indentLength ? this.getCellType() :\n i === 0 && this.parent.childGrid ? CellType.DetailFooterIntent : CellType.Indent, indents[parseInt(i.toString(), 10)], isDetailGridAlone));\n }\n var row = new Row({ data: data, attributes: { class: 'e-summaryrow' } });\n row.cells = tmp;\n row.uid = getUid('grid-row');\n row.parentUid = parentUid;\n row.isAggregateRow = true;\n row.visible = tmp.some(function (cell) { return cell.isDataCell && cell.visible; });\n return row;\n };\n SummaryModelGenerator.prototype.getGeneratedCell = function (column, summaryRow, cellType, indent, isDetailGridAlone) {\n //Get the summary column by display\n var sColumn = summaryRow.columns.filter(function (scolumn) { return scolumn.columnName === column.field; })[0];\n var attrs = {\n 'style': { 'textAlign': column.textAlign },\n 'e-mappinguid': column.uid, index: column.index\n };\n if (indent) {\n attrs.class = indent;\n }\n if (isNullOrUndefined(indent) && isDetailGridAlone) {\n attrs.class = 'e-detailindentcelltop';\n }\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(sColumn),\n 'isTemplate': sColumn && !isNullOrUndefined(sColumn.footerTemplate\n || sColumn.groupFooterTemplate || sColumn.groupCaptionTemplate),\n 'column': sColumn || {},\n 'attributes': attrs,\n 'cellType': cellType\n };\n opt.column.headerText = column.headerText;\n return new Cell(opt);\n };\n SummaryModelGenerator.prototype.buildSummaryData = function (data, args) {\n var dummy = [];\n var summaryRows = this.getData();\n var single = {};\n for (var i = 0; i < summaryRows.length; i++) {\n single = {};\n var column = summaryRows[parseInt(i.toString(), 10)].columns;\n for (var j = 0; j < column.length; j++) {\n single = this.setTemplate(column[parseInt(j.toString(), 10)], (args && args.aggregates) ? args : data, single);\n }\n dummy.push(single);\n }\n return dummy;\n };\n SummaryModelGenerator.prototype.getIndentByLevel = function () {\n return this.parent.groupSettings.columns.map(function () { return 'e-indentcelltop'; });\n };\n SummaryModelGenerator.prototype.setTemplate = function (column, data, single) {\n var types = column.type;\n var helper = {};\n var formatFn = column.getFormatter() || (function () { return function (a) { return a; }; })();\n var group = data;\n if (!(types instanceof Array)) {\n types = [column.type];\n }\n for (var i = 0; i < types.length; i++) {\n var key = column.field + ' - ' + types[parseInt(i.toString(), 10)].toLowerCase();\n var disp = column.columnName;\n var val = types[parseInt(i.toString(), 10)] !== 'Custom' && group.aggregates && key in group.aggregates ? group.aggregates[\"\" + key] :\n calculateAggregate(types[parseInt(i.toString(), 10)], group.aggregates ? group : data, column, this.parent);\n single[\"\" + disp] = single[\"\" + disp] || {};\n single[\"\" + disp][\"\" + key] = val;\n single[\"\" + disp][types[parseInt(i.toString(), 10)]] = !isNullOrUndefined(val) ? formatFn(val) : ' ';\n if (group.field) {\n single[\"\" + disp].field = group.field;\n single[\"\" + disp].key = group.key;\n }\n }\n helper.format = column.getFormatter();\n column.setTemplate(helper);\n return single;\n };\n SummaryModelGenerator.prototype.getCellType = function () {\n return CellType.Summary;\n };\n return SummaryModelGenerator;\n}());\nexport { SummaryModelGenerator };\nvar GroupSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(GroupSummaryModelGenerator, _super);\n function GroupSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupFooterTemplate !== undefined;\n };\n GroupSummaryModelGenerator.prototype.getIndentByLevel = function (level) {\n if (level === void 0) { level = this.parent.groupSettings.columns.length; }\n if (this.parent.allowRowDragAndDrop && this.parent.groupSettings.columns.length) {\n level -= 1;\n }\n return this.parent.groupSettings.columns.map(function (v, indx) { return indx <= level - 1 ? '' : 'e-indentcelltop'; });\n };\n GroupSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.GroupSummary;\n };\n return GroupSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { GroupSummaryModelGenerator };\nvar CaptionSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(CaptionSummaryModelGenerator, _super);\n function CaptionSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CaptionSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupCaptionTemplate !== undefined;\n };\n CaptionSummaryModelGenerator.prototype.getData = function () {\n var initVal = { columns: [] };\n return [_super.prototype.getData.call(this).reduce(function (prev, cur) {\n prev.columns = prev.columns.concat(cur.columns);\n return prev;\n }, initVal)];\n };\n CaptionSummaryModelGenerator.prototype.isEmpty = function () {\n return (this.getData()[0].columns || []).length === 0;\n };\n CaptionSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.CaptionSummary;\n };\n return CaptionSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { CaptionSummaryModelGenerator };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Internationalization, setCulture } from '@syncfusion/ej2-base';\n/**\n * ValueFormatter class to globalize the value.\n *\n * @hidden\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n if (!isNullOrUndefined(cultureName)) {\n this.intl.culture = cultureName;\n }\n }\n ValueFormatter.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n ValueFormatter.prototype.getParserFunction = function (format) {\n if (format.type) {\n return this.intl.getDateParser(format);\n }\n else {\n return this.intl.getNumberParser(format);\n }\n };\n ValueFormatter.prototype.fromView = function (value, format, type) {\n if ((type === 'date' || type === 'datetime' || type === 'number') && (!isNullOrUndefined(format))) {\n return format(value);\n }\n else {\n return value;\n }\n };\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n ValueFormatter.prototype.setCulture = function (cultureName) {\n if (!isNullOrUndefined(cultureName)) {\n setCulture(cultureName);\n }\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { formatUnit } from '@syncfusion/ej2-base';\nimport { columnWidthChanged, preventFrozenScrollRefresh } from '../base/constant';\nimport { Column } from '../models/column';\nimport { parentsUntil, ispercentageWidth, getScrollBarWidth } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * ColumnWidthService\n *\n * @hidden\n */\nvar ColumnWidthService = /** @class */ (function () {\n function ColumnWidthService(parent) {\n this.parent = parent;\n }\n ColumnWidthService.prototype.setWidthToColumns = function () {\n var i = 0;\n var indexes = this.parent.getColumnIndexesInView();\n var wFlag = true;\n var totalColumnsWidth = 0;\n if (this.parent.allowGrouping) {\n for (var len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n wFlag = false;\n continue;\n }\n this.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n var columns = this.parent.getColumns();\n for (var j = 0; j < columns.length; j++) {\n this.setColumnWidth(columns[parseInt(j.toString(), 10)], wFlag && this.parent.enableColumnVirtualization ? undefined : j + i);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), columns.length);\n }\n totalColumnsWidth = this.getTableWidth(this.parent.getColumns());\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(totalColumnsWidth);\n }\n };\n ColumnWidthService.prototype.setMinwidthBycalculation = function (tWidth) {\n var difference = 0;\n var collection = this.parent.getColumns().filter(function (a) {\n return isNullOrUndefined(a.width) || a.width === 'auto';\n });\n if (collection.length) {\n if (!isNullOrUndefined(this.parent.width) && this.parent.width !== 'auto' &&\n typeof (this.parent.width) === 'string' && this.parent.width.indexOf('%') === -1) {\n difference = (typeof this.parent.width === 'string' ? parseInt(this.parent.width, 10) : this.parent.width) - tWidth;\n }\n else {\n difference = this.parent.element.getBoundingClientRect().width - tWidth;\n }\n var tmWidth = 0;\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\n var cols = collection_1[_i];\n tmWidth += !isNullOrUndefined(cols.minWidth) ?\n ((typeof cols.minWidth === 'string' ? parseInt(cols.minWidth, 10) : cols.minWidth)) : 0;\n }\n for (var i = 0; i < collection.length; i++) {\n if (tWidth === 0 && this.parent.allowResizing && this.isWidthUndefined() && (i !== collection.length - 1)) {\n this.setUndefinedColumnWidth(collection);\n }\n var index = this.parent.getColumnIndexByField(collection[parseInt(i.toString(), 10)].field) + this.parent.getIndentCount();\n if (tWidth !== 0 && difference < tmWidth) {\n this.setWidth(collection[parseInt(i.toString(), 10)].minWidth, index);\n }\n else if (tWidth !== 0 && difference > tmWidth) {\n this.setWidth('', index, true);\n }\n }\n }\n };\n ColumnWidthService.prototype.setUndefinedColumnWidth = function (collection) {\n for (var k = 0; k < collection.length; k++) {\n if (k !== collection.length - 1) {\n collection[parseInt(k.toString(), 10)].width = 200;\n this.setWidth(200, this.parent.getColumnIndexByField(collection[parseInt(k.toString(), 10)].field));\n }\n }\n };\n ColumnWidthService.prototype.setColumnWidth = function (column, index, module) {\n if (this.parent.getColumns().length < 1) {\n return;\n }\n var columnIndex = isNullOrUndefined(index) ? this.parent.getNormalizedColumnIndex(column.uid) : index;\n var cWidth = this.getWidth(column);\n var tgridWidth = this.getTableWidth(this.parent.getColumns());\n if (cWidth !== null) {\n this.setWidth(cWidth, columnIndex);\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(tgridWidth);\n }\n if ((this.parent.allowResizing && module === 'resize') || (this.parent.getFrozenColumns() && this.parent.allowResizing)) {\n this.setWidthToTable();\n }\n this.parent.notify(columnWidthChanged, { index: columnIndex, width: cWidth, column: column, module: module });\n }\n };\n ColumnWidthService.prototype.setWidth = function (width, index, clear) {\n if (this.parent.groupSettings.columns.length > index && ispercentageWidth(this.parent)) {\n var elementWidth = this.parent.element.offsetWidth;\n width = (30 / elementWidth * 100).toFixed(1) + '%';\n }\n var header = this.parent.getHeaderTable();\n var content = this.parent.getContentTable();\n var fWidth = formatUnit(width);\n var headerCol;\n var frzCols = this.parent.getFrozenColumns();\n var isDraggable = this.parent.isRowDragable();\n frzCols = frzCols && isDraggable ? frzCols + 1 : frzCols;\n var mHdr = this.parent.getHeaderContent().querySelector('.' + literals.movableHeader);\n var mCont = this.parent.getContent().querySelector('.' + literals.movableContent);\n var freezeLeft = this.parent.getFrozenLeftColumnsCount();\n var freezeRight = this.parent.getFrozenRightColumnsCount();\n var movableCount = this.parent.getMovableColumnsCount();\n var isColFrozen = freezeLeft !== 0 || freezeRight !== 0;\n if (frzCols && index >= frzCols) {\n if (!mHdr || !mHdr.querySelector(literals.colGroup)) {\n return;\n }\n headerCol = mHdr\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mHdr.scrollLeft > 0) {\n var colGroup = mHdr.querySelector(literals.colGroup);\n headerCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n index = isDraggable ? index - 1 : index;\n target = index < freezeLeft ? header : mHdr;\n }\n else if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? header : mHdr;\n }\n else if (freezeLeft && freezeRight) {\n index = isDraggable ? index - 1 : index;\n var frHdr = this.parent.getFrozenRightHeader();\n target = index < freezeLeft ? header : index < (freezeLeft + movableCount) ? mHdr : frHdr;\n }\n headerCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n if (!headerCol) {\n return;\n }\n }\n else {\n headerCol = header.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n }\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = '';\n }\n var contentCol;\n if (frzCols && index >= frzCols) {\n contentCol = this.parent.getContent().querySelector('.' + literals.movableContent)\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mCont.scrollLeft > 0) {\n var colGroup = this.parent.getContent().querySelector('.' + literals.movableContent)\n .querySelector(literals.colGroup);\n contentCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n target = index < freezeLeft ? content : mCont;\n }\n if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? content : mCont;\n }\n if (freezeLeft && freezeRight) {\n var frCont = this.parent.getContent().querySelector('.e-frozen-right-content');\n target = index < freezeLeft ? content : index < (freezeLeft + movableCount) ? mCont : frCont;\n }\n contentCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n }\n else {\n contentCol = content.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n }\n if (contentCol && !clear) {\n if (contentCol.style.width !== headerCol.style.width && this.parent.isFrozenGrid() && this.parent['reorderModule'] &&\n this.parent['reorderModule'].element && this.parent['reorderModule'].destElement) {\n contentCol.style.display = this.parent.getColumnByIndex(index).visible ? '' : 'none';\n }\n contentCol.style.width = fWidth;\n }\n else if (contentCol && clear) {\n contentCol.style.width = '';\n }\n if (!this.parent.enableColumnVirtualization) {\n var edit = this.parent.element.querySelectorAll('.e-table.e-inline-edit');\n var editTableCol = [];\n for (var i = 0; i < edit.length; i++) {\n if (parentsUntil(edit[parseInt(i.toString(), 10)], 'e-grid').id === this.parent.element.id) {\n for (var j = 0; j < edit[parseInt(i.toString(), 10)].querySelector('colgroup').children.length; j++) {\n editTableCol.push(edit[parseInt(i.toString(), 10)].querySelector('colgroup').children[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (edit.length && editTableCol.length) {\n editTableCol[parseInt(index.toString(), 10)].style.width = fWidth;\n }\n }\n if (this.parent.isFrozenGrid()) {\n this.refreshFrozenScrollbar();\n }\n };\n ColumnWidthService.prototype.getColumnLevelFrozenColgroup = function (index, left, movable, ele) {\n if (!ele || !ele.querySelector(literals.colGroup)) {\n return null;\n }\n var columns = this.parent.getColumns();\n var isDrag = this.parent.isRowDragable();\n var frzMode = this.parent.getFrozenMode();\n var headerCol;\n var colGroup = [].slice.call(ele.querySelector(literals.colGroup + ':not(.e-masked-colgroup)').children);\n if (frzMode === 'Right' && isDrag && index === (movable + this.parent.getFrozenRightColumnsCount())) {\n headerCol = colGroup[colGroup.length - 1];\n }\n else if (isDrag && index === -1) {\n headerCol = colGroup[0];\n }\n else if (columns[parseInt(index.toString(), 10)].freeze === 'Left') {\n headerCol = colGroup[isDrag ? (index + 1) : index];\n }\n else if (columns[parseInt(index.toString(), 10)].freeze === 'Right') {\n headerCol = colGroup[index - (left + movable)];\n }\n else {\n headerCol = colGroup[index - left];\n }\n return headerCol;\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnWidthService.prototype.refreshFrozenScrollbar = function () {\n var args = { cancel: false };\n this.parent.notify(preventFrozenScrollRefresh, args);\n if (args.cancel) {\n return;\n }\n var scrollWidth = getScrollBarWidth();\n var frozenScrollbar = this.parent.element.querySelector('.e-frozenscrollbar');\n var movableScrollbar = this.parent.element.querySelector('.e-movablescrollbar');\n var frozencontent = this.parent.getContent().querySelector('.' + literals.frozenContent);\n var movableContent = this.parent.getContent().querySelector('.' + literals.movableContent);\n var frozenWidth = frozencontent.firstElementChild.getBoundingClientRect().width;\n var movableWidth = movableContent.firstElementChild.getBoundingClientRect().width;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenWidth = frozenWidth + scrollWidth;\n }\n frozenScrollbar.style.width = frozenWidth + 'px';\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frozenRightScrollbar = this.parent.element.querySelector('.e-frozen-right-scrollbar');\n var frozenRightWidth = this.parent.getContent().querySelector('.e-frozen-right-content')\n .firstElementChild.getBoundingClientRect().width;\n if (this.parent.height !== 'auto') {\n frozenRightWidth = frozenRightWidth + scrollWidth;\n }\n frozenRightScrollbar.style.width = frozenRightWidth + 'px';\n }\n else {\n if (this.parent.enableColumnVirtualization) {\n var placeHolder = this.parent.getMovableVirtualContent().querySelector('.e-virtualtrack');\n if (placeHolder) {\n movableWidth = placeHolder.scrollWidth;\n }\n }\n if (this.parent.getFrozenMode() !== 'Right' && this.parent.height !== 'auto') {\n movableWidth = movableWidth + scrollWidth;\n }\n }\n movableScrollbar.firstElementChild.style.width = movableWidth + 'px';\n };\n ColumnWidthService.prototype.getSiblingsHeight = function (element) {\n var previous = this.getHeightFromDirection(element, 'previous');\n var next = this.getHeightFromDirection(element, 'next');\n return previous + next;\n };\n ColumnWidthService.prototype.getHeightFromDirection = function (element, direction) {\n var sibling = element[direction + 'ElementSibling'];\n var result = 0;\n var classList = [literals.gridHeader, literals.gridFooter, 'e-groupdroparea', 'e-gridpager', 'e-toolbar', 'e-temp-toolbar'];\n while (sibling) {\n if (classList.some(function (value) { return sibling.classList.contains(value); })) {\n result += sibling.offsetHeight;\n }\n sibling = sibling[direction + 'ElementSibling'];\n }\n return result;\n };\n ColumnWidthService.prototype.isWidthUndefined = function () {\n var isWidUndefCount = this.parent.getColumns().filter(function (col) {\n return isNullOrUndefined(col.width) && isNullOrUndefined(col.minWidth);\n }).length;\n return (this.parent.getColumns().length === isWidUndefCount);\n };\n ColumnWidthService.prototype.getWidth = function (column) {\n if (isNullOrUndefined(column.width) && this.parent.allowResizing\n && isNullOrUndefined(column.minWidth) && !this.isWidthUndefined()) {\n column.width = 200;\n }\n if (this.parent.isFrozenGrid() && isNullOrUndefined(column.width) &&\n (column.getFreezeTableName() === literals.frozenLeft || column.getFreezeTableName() === literals.frozenRight)) {\n column.width = 200;\n }\n if (!column.width) {\n return null;\n }\n var width = parseInt(column.width.toString(), 10);\n if (column.minWidth && width < parseInt(column.minWidth.toString(), 10)) {\n return column.minWidth;\n }\n else if ((column.maxWidth && width > parseInt(column.maxWidth.toString(), 10))) {\n return column.maxWidth;\n }\n else {\n return column.width;\n }\n };\n ColumnWidthService.prototype.getTableWidth = function (columns) {\n var tWidth = 0;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n var cWidth = this.getWidth(column);\n if (column.width === 'auto') {\n cWidth = 0;\n }\n if (column.visible !== false && cWidth !== null) {\n tWidth += parseInt(cWidth.toString(), 10);\n }\n }\n return tWidth;\n };\n ColumnWidthService.prototype.calcMovableOrFreezeColWidth = function (tableType) {\n var columns = this.parent.getColumns().slice();\n var left = this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenColumns();\n var movable = this.parent.getMovableColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n if (tableType === 'movable') {\n if (right) {\n columns.splice(left + movable, columns.length);\n }\n if (left) {\n columns.splice(0, left);\n }\n }\n else if (tableType === 'freeze-left') {\n columns.splice(left, columns.length);\n }\n else if (tableType === 'freeze-right') {\n columns.splice(0, left + movable);\n }\n return formatUnit(this.getTableWidth(columns));\n };\n ColumnWidthService.prototype.setWidthToFrozenRightTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-right');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n var headerTbl = this.parent.getHeaderContent().querySelector('.e-frozen-right-header')\n .querySelector('.' + literals.table + ':not(.e-masked-table)');\n var cntTbl = this.parent.getContent().querySelector('.e-frozen-right-content')\n .querySelector('.' + literals.table + ':not(.e-masked-table)');\n headerTbl.style.width = freezeWidth;\n cntTbl.style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToFrozenLeftTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-left');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.getHeaderTable().style.width = freezeWidth;\n this.parent.getContentTable().style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableTable = function () {\n var movableWidth = '';\n var isColUndefined = this.parent.getColumns().filter(function (a) { return isNullOrUndefined(a.width); }).length >= 1;\n var isWidthAuto = this.parent.getColumns().filter(function (a) { return (a.width === 'auto'); }).length >= 1;\n var movableHeader = this.parent.getHeaderContent().querySelector('.' + literals.movableHeader);\n var movableContent = this.parent.getContent().querySelector('.' + literals.movableContent);\n if (typeof this.parent.width === 'number' && !isColUndefined && !isWidthAuto && !this.parent.resizeModule.resizeProcess) {\n movableWidth = formatUnit(this.parent.width - parseInt(this.calcMovableOrFreezeColWidth('freeze').split('px')[0], 10) - 5);\n }\n else if (!isColUndefined && !isWidthAuto) {\n movableWidth = this.calcMovableOrFreezeColWidth('movable');\n }\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n if (movableHeader.firstElementChild) {\n if (movableHeader.firstElementChild.classList.contains('e-masked-table')) {\n movableHeader.childNodes[1].style.width = movableWidth;\n }\n else {\n movableHeader.firstElementChild.style.width = movableWidth;\n }\n }\n if (movableContent.firstElementChild.classList.contains('e-masked-table')) {\n movableContent.childNodes[1].style.width = movableWidth;\n }\n else {\n movableContent.firstElementChild.style.width = movableWidth;\n }\n };\n ColumnWidthService.prototype.setWidthToFrozenEditTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[0].style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableEditTable = function () {\n var movableWidth = this.calcMovableOrFreezeColWidth('movable');\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[1].style.width = movableWidth;\n };\n ColumnWidthService.prototype.setWidthToTable = function () {\n var tWidth = formatUnit(this.getTableWidth(this.parent.getColumns()));\n if (this.parent.isFrozenGrid()) {\n if (this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()) {\n this.setWidthToFrozenLeftTable();\n }\n this.setWidthToMovableTable();\n if (this.parent.getFrozenRightColumnsCount()) {\n this.setWidthToFrozenRightTable();\n }\n }\n else {\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }));\n }\n tWidth = this.isAutoResize() ? '100%' : tWidth;\n this.parent.getHeaderTable().style.width = tWidth;\n this.parent.getContentTable().style.width = tWidth;\n }\n var edit = this.parent.element.querySelector('.e-table.e-inline-edit');\n if (edit && this.parent.getFrozenColumns()) {\n this.setWidthToFrozenEditTable();\n this.setWidthToMovableEditTable();\n }\n else if (edit) {\n edit.style.width = tWidth;\n }\n };\n ColumnWidthService.prototype.isAutoResize = function () {\n return this.parent.allowResizing && this.parent.resizeSettings.mode === 'Auto';\n };\n return ColumnWidthService;\n}());\nexport { ColumnWidthService };\n","/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\nimport { createElement, attributes, addClass, removeClass, detach, classList } from '@syncfusion/ej2-base';\nimport { closest, formatUnit, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nvar CLASSNAMES = {\n RTL: 'e-rtl',\n DISABLE: 'e-disabled',\n INPUT: 'e-input',\n TEXTAREA: 'e-multi-line-input',\n INPUTGROUP: 'e-input-group',\n FLOATINPUT: 'e-float-input',\n FLOATLINE: 'e-float-line',\n FLOATTEXT: 'e-float-text',\n FLOATTEXTCONTENT: 'e-float-text-content',\n CLEARICON: 'e-clear-icon',\n CLEARICONHIDE: 'e-clear-icon-hide',\n LABELTOP: 'e-label-top',\n LABELBOTTOM: 'e-label-bottom',\n NOFLOATLABEL: 'e-no-float-label',\n INPUTCUSTOMTAG: 'e-input-custom-tag',\n FLOATCUSTOMTAG: 'e-float-custom-tag'\n};\n/**\n * Base for Input creation through util methods.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Input;\n(function (Input) {\n var privateInputObj = {\n container: null,\n buttons: [],\n clearButton: null\n };\n var floatType;\n var isBindClearAction = true;\n /**\n * Create a wrapper to input element with multiple span elements and set the basic properties to input based components.\n * ```\n * E.g : Input.createInput({ element: element, floatLabelType : \"Auto\", properties: { placeholder: 'Search' } });\n * ```\n *\n */\n function createInput(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var inputObject = { container: null, buttons: [], clearButton: null };\n floatType = args.floatLabelType;\n isBindClearAction = args.bindClearAction;\n if (isNullOrUndefined(args.floatLabelType) || args.floatLabelType === 'Never') {\n inputObject.container = createInputContainer(args, CLASSNAMES.INPUTGROUP, CLASSNAMES.INPUTCUSTOMTAG, 'span', makeElement);\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n addClass([args.element], CLASSNAMES.INPUT);\n inputObject.container.appendChild(args.element);\n }\n else {\n createFloatingInput(args, inputObject, makeElement);\n }\n bindInitialEvent(args);\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.showClearButton) &&\n args.properties.showClearButton) {\n setClearButton(args.properties.showClearButton, args.element, inputObject, true, makeElement);\n inputObject.clearButton.setAttribute('role', 'button');\n if (inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([inputObject.container], CLASSNAMES.INPUTGROUP);\n }\n }\n if (!isNullOrUndefined(args.buttons)) {\n for (var i = 0; i < args.buttons.length; i++) {\n inputObject.buttons.push(appendSpan(args.buttons[i], inputObject.container, makeElement));\n }\n }\n if (!isNullOrUndefined(args.element) && args.element.tagName === 'TEXTAREA') {\n addClass([inputObject.container], CLASSNAMES.TEXTAREA);\n }\n validateInputType(inputObject.container, args.element);\n inputObject = setPropertyValue(args, inputObject);\n createSpanElement(inputObject.container, makeElement);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n privateInputObj = inputObject;\n return inputObject;\n }\n Input.createInput = createInput;\n function bindInitialEvent(args) {\n checkInputValue(args.floatLabelType, args.element);\n args.element.addEventListener('focus', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.add('e-input-focus');\n }\n if (args.floatLabelType === 'Auto') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n });\n args.element.addEventListener('blur', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.remove('e-input-focus');\n }\n if (args.floatLabelType === 'Auto' && args.element.value === '') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n });\n args.element.addEventListener('input', function () {\n checkInputValue(floatType, args.element);\n });\n }\n Input.bindInitialEvent = bindInitialEvent;\n function checkInputValue(floatLabelType, inputElement) {\n var inputValue = inputElement.value;\n var inputParent = inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputValue !== '' && !isNullOrUndefined(inputValue)) {\n if (inputParent && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.add('e-valid-input');\n }\n else if (grandParent && grandParent.classList.contains('e-input-group')) {\n grandParent.classList.add('e-valid-input');\n }\n }\n else if (floatLabelType !== 'Always') {\n if (inputParent && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.remove('e-valid-input');\n }\n else if (grandParent && grandParent.classList.contains('e-input-group')) {\n grandParent.classList.remove('e-valid-input');\n }\n }\n }\n function _focusFn() {\n var label = getParentNode(this).getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function _blurFn() {\n var parent = getParentNode(this);\n if ((parent.getElementsByTagName('textarea')[0]) ? parent.getElementsByTagName('textarea')[0].value === '' :\n parent.getElementsByTagName('input')[0].value === '') {\n var label = parent.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function wireFloatingEvents(element) {\n element.addEventListener('focus', _focusFn);\n element.addEventListener('blur', _blurFn);\n }\n Input.wireFloatingEvents = wireFloatingEvents;\n function unwireFloatingEvents(element) {\n element.removeEventListener('focus', _focusFn);\n element.removeEventListener('blur', _blurFn);\n }\n function createFloatingInput(args, inputObject, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.floatLabelType === 'Auto') {\n wireFloatingEvents(args.element);\n }\n if (isNullOrUndefined(inputObject.container)) {\n inputObject.container = createInputContainer(args, CLASSNAMES.FLOATINPUT, CLASSNAMES.FLOATCUSTOMTAG, 'div', makeElement);\n inputObject.container.classList.add(CLASSNAMES.INPUTGROUP);\n if (args.element.parentNode) {\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n }\n }\n else {\n if (!isNullOrUndefined(args.customTag)) {\n inputObject.container.classList.add(CLASSNAMES.FLOATCUSTOMTAG);\n }\n inputObject.container.classList.add(CLASSNAMES.FLOATINPUT);\n }\n var floatLinelement = makeElement('span', { className: CLASSNAMES.FLOATLINE });\n var floatLabelElement = makeElement('label', { className: CLASSNAMES.FLOATTEXT });\n if (!isNullOrUndefined(args.element.id) && args.element.id !== '') {\n floatLabelElement.id = 'label_' + args.element.id.replace(/ /g, '_');\n attributes(args.element, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(args.element.placeholder) && args.element.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.element.placeholder);\n args.element.removeAttribute('placeholder');\n }\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.placeholder) &&\n args.properties.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.properties.placeholder);\n }\n if (!floatLabelElement.innerText) {\n inputObject.container.classList.add(CLASSNAMES.NOFLOATLABEL);\n }\n if (inputObject.container.classList.contains('e-float-icon-left')) {\n var inputWrap = inputObject.container.querySelector('.e-input-in-wrap');\n inputWrap.appendChild(args.element);\n inputWrap.appendChild(floatLinelement);\n inputWrap.appendChild(floatLabelElement);\n }\n else {\n inputObject.container.appendChild(args.element);\n inputObject.container.appendChild(floatLinelement);\n inputObject.container.appendChild(floatLabelElement);\n }\n updateLabelState(args.element.value, floatLabelElement);\n if (args.floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([floatLabelElement], CLASSNAMES.LABELBOTTOM);\n }\n addClass([floatLabelElement], CLASSNAMES.LABELTOP);\n }\n if (args.floatLabelType === 'Auto') {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n args.element.addEventListener('input', function (event) {\n updateLabelState(args.element.value, floatLabelElement, args.element);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n args.element.addEventListener('blur', function (event) {\n updateLabelState(args.element.value, floatLabelElement);\n });\n }\n if (!isNullOrUndefined(args.element.getAttribute('id'))) {\n floatLabelElement.setAttribute('for', args.element.getAttribute('id'));\n }\n }\n function checkFloatLabelType(type, container) {\n if (type === 'Always' && container.classList.contains('e-outline')) {\n container.classList.add('e-valid-input');\n }\n }\n function setPropertyValue(args, inputObject) {\n if (!isNullOrUndefined(args.properties)) {\n for (var _i = 0, _a = Object.keys(args.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n setCssClass(args.properties.cssClass, [inputObject.container]);\n checkFloatLabelType(args.floatLabelType, inputObject.container);\n break;\n case 'enabled':\n setEnabled(args.properties.enabled, args.element, args.floatLabelType, inputObject.container);\n break;\n case 'enableRtl':\n setEnableRtl(args.properties.enableRtl, [inputObject.container]);\n break;\n case 'placeholder':\n setPlaceholder(args.properties.placeholder, args.element);\n break;\n case 'readonly':\n setReadonly(args.properties.readonly, args.element);\n break;\n }\n }\n }\n return inputObject;\n }\n function updateIconState(value, button, readonly) {\n if (!isNullOrUndefined(button)) {\n if (value && !readonly) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n function updateLabelState(value, label, element) {\n if (element === void 0) { element = null; }\n if (value) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n else {\n var isNotFocused = element != null ? element !== document.activeElement : true;\n if (isNotFocused) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function getParentNode(element) {\n var parentNode = isNullOrUndefined(element.parentNode) ? element\n : element.parentNode;\n if (parentNode && parentNode.classList.contains('e-input-in-wrap')) {\n parentNode = parentNode.parentNode;\n }\n return parentNode;\n }\n /**\n * To create clear button.\n */\n function createClearButton(element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = makeElement('span', { className: CLASSNAMES.CLEARICON });\n var container = inputObject.container;\n if (!isNullOrUndefined(initial)) {\n container.appendChild(button);\n }\n else {\n var baseElement = inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT) ?\n inputObject.container.querySelector('.' + CLASSNAMES.FLOATTEXT) : element;\n baseElement.insertAdjacentElement('afterend', button);\n }\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n wireClearBtnEvents(element, button, container);\n button.setAttribute('aria-label', 'close');\n return button;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function wireClearBtnEvents(element, button, container) {\n if (isBindClearAction === undefined || isBindClearAction) {\n button.addEventListener('click', function (event) {\n if (!(element.classList.contains(CLASSNAMES.DISABLE) || element.readOnly)) {\n event.preventDefault();\n if (element !== document.activeElement) {\n element.focus();\n }\n element.value = '';\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('input', function (event) {\n updateIconState(element.value, button);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('focus', function (event) {\n updateIconState(element.value, button, element.readOnly);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('blur', function (event) {\n setTimeout(function () {\n if (!isNullOrUndefined(button)) {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n button = !isNullOrUndefined(element) && element.classList.contains('e-combobox') ? null : button;\n }\n }, 200);\n });\n }\n Input.wireClearBtnEvents = wireClearBtnEvents;\n function destroy() {\n privateInputObj = null;\n }\n Input.destroy = destroy;\n function validateLabel(element, floatLabelType) {\n var parent = getParentNode(element);\n if (parent.classList.contains(CLASSNAMES.FLOATINPUT) && floatLabelType === 'Auto') {\n var label = getParentNode(element).getElementsByClassName('e-float-text')[0];\n updateLabelState(element.value, label, element);\n }\n }\n /**\n * To create input box contianer.\n */\n function createInputContainer(args, className, tagClass, tag, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container;\n if (!isNullOrUndefined(args.customTag)) {\n container = makeElement(args.customTag, { className: className });\n container.classList.add(tagClass);\n }\n else {\n container = makeElement(tag, { className: className });\n }\n container.classList.add('e-control-wrapper');\n return container;\n }\n function encodePlaceHolder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanEle = document.createElement('span');\n spanEle.innerHTML = '';\n var hiddenInput = (spanEle.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n }\n /**\n * Sets the value to the input element.\n * ```\n * E.g : Input.setValue('content', element, \"Auto\", true );\n * ```\n *\n * @param {string} value - Specify the value of the input element.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the specified value is updated.\n * @param {string} floatLabelType - Specify the float label type of the input element.\n * @param {boolean} clearButton - Boolean value to specify whether the clear icon is enabled / disabled on the input.\n */\n function setValue(value, element, floatLabelType, clearButton) {\n element.value = value;\n if (floatLabelType === 'Auto' && value === '') {\n calculateWidth(element, element.parentElement);\n }\n if ((!isNullOrUndefined(floatLabelType)) && floatLabelType === 'Auto') {\n validateLabel(element, floatLabelType);\n }\n if (!isNullOrUndefined(clearButton) && clearButton) {\n var parentElement = getParentNode(element);\n if (!isNullOrUndefined(parentElement)) {\n var button = parentElement.getElementsByClassName(CLASSNAMES.CLEARICON)[0];\n if (!isNullOrUndefined(button)) {\n if (element.value && !isNullOrUndefined(parentElement) && parentElement.classList.contains('e-input-focus')) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n }\n checkInputValue(floatLabelType, element);\n }\n Input.setValue = setValue;\n /**\n * Sets the single or multiple cssClass to wrapper of input element.\n * ```\n * E.g : Input.setCssClass('e-custom-class', [element]);\n * ```\n *\n * @param {string} cssClass - Css class names which are needed to add.\n * @param {Element[] | NodeList} elements - The elements which are needed to add / remove classes.\n * @param {string} oldClass\n * - Css class names which are needed to remove. If old classes are need to remove, can give this optional parameter.\n */\n function setCssClass(cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n }\n Input.setCssClass = setCssClass;\n /**\n * Set the width to the placeholder when it overflows on the button such as spinbutton, clearbutton, icon etc\n * ```\n * E.g : Input.calculateWidth(element, container);\n * ```\n *\n * @param {any} element - Input element which is need to add.\n * @param {HTMLElement} container - The parent element which is need to get the label span to calculate width\n */\n function calculateWidth(element, container, moduleName) {\n var elementWidth = moduleName === 'multiselect' ? element : element.clientWidth - parseInt(getComputedStyle(element, null).getPropertyValue('padding-left'), 10);\n if (!isNullOrUndefined(container.getElementsByClassName('e-float-text-content')[0])) {\n if (container.getElementsByClassName('e-float-text-content')[0].classList.contains('e-float-text-overflow')) {\n container.getElementsByClassName('e-float-text-content')[0].classList.remove('e-float-text-overflow');\n }\n if (elementWidth < container.getElementsByClassName('e-float-text-content')[0].clientWidth || elementWidth === container.getElementsByClassName('e-float-text-content')[0].clientWidth) {\n container.getElementsByClassName('e-float-text-content')[0].classList.add('e-float-text-overflow');\n }\n }\n }\n Input.calculateWidth = calculateWidth;\n /**\n * Set the width to the wrapper of input element.\n * ```\n * E.g : Input.setWidth('200px', container);\n * ```\n *\n * @param {number | string} width - Width value which is need to add.\n * @param {HTMLElement} container - The element on which the width is need to add.\n */\n function setWidth(width, container) {\n if (typeof width === 'number') {\n container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n calculateWidth(container.firstChild, container);\n }\n Input.setWidth = setWidth;\n /**\n * Set the placeholder attribute to the input element.\n * ```\n * E.g : Input.setPlaceholder('Search here', element);\n * ```\n *\n * @param {string} placeholder - Placeholder value which is need to add.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the placeholder is need to add.\n */\n function setPlaceholder(placeholder, element) {\n placeholder = encodePlaceHolder(placeholder);\n var parentElement = getParentNode(element);\n if (parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n parentElement.getElementsByClassName('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = placeholder : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = placeholder;\n parentElement.classList.remove(CLASSNAMES.NOFLOATLABEL);\n element.removeAttribute('placeholder');\n }\n else {\n parentElement.classList.add(CLASSNAMES.NOFLOATLABEL);\n parentElement.getElementsByClassName('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = '' : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n }\n else {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n attributes(element, { 'placeholder': placeholder });\n }\n else {\n element.removeAttribute('placeholder');\n }\n }\n }\n Input.setPlaceholder = setPlaceholder;\n /**\n * Set the read only attribute to the input element\n * ```\n * E.g : Input.setReadonly(true, element);\n * ```\n *\n * @param {boolean} isReadonly\n * - Boolean value to specify whether to set read only. Setting \"True\" value enables read only.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - The element which is need to enable read only.\n */\n function setReadonly(isReadonly, element, floatLabelType) {\n if (isReadonly) {\n attributes(element, { readonly: '' });\n }\n else {\n element.removeAttribute('readonly');\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setReadonly = setReadonly;\n /**\n * Displays the element direction from right to left when its enabled.\n * ```\n * E.g : Input.setEnableRtl(true, [inputObj.container]);\n * ```\n *\n * @param {boolean} isRtl\n * - Boolean value to specify whether to set RTL. Setting \"True\" value enables the RTL mode.\n * @param {Element[] | NodeList} elements\n * - The elements that are needed to enable/disable RTL.\n */\n function setEnableRtl(isRtl, elements) {\n if (isRtl) {\n addClass(elements, CLASSNAMES.RTL);\n }\n else {\n removeClass(elements, CLASSNAMES.RTL);\n }\n }\n Input.setEnableRtl = setEnableRtl;\n /**\n * Enables or disables the given input element.\n * ```\n * E.g : Input.setEnabled(false, element);\n * ```\n *\n * @param {boolean} isEnable\n * - Boolean value to specify whether to enable or disable.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - Element to be enabled or disabled.\n */\n function setEnabled(isEnable, element, floatLabelType, inputContainer) {\n var disabledAttrs = { 'disabled': 'disabled', 'aria-disabled': 'true' };\n var considerWrapper = isNullOrUndefined(inputContainer) ? false : true;\n if (isEnable) {\n element.classList.remove(CLASSNAMES.DISABLE);\n removeAttributes(disabledAttrs, element);\n if (considerWrapper) {\n removeClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n else {\n element.classList.add(CLASSNAMES.DISABLE);\n addAttributes(disabledAttrs, element);\n if (considerWrapper) {\n addClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setEnabled = setEnabled;\n function setClearButton(isClear, element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (isClear) {\n inputObject.clearButton = createClearButton(element, inputObject, initial, makeElement);\n }\n else {\n remove(inputObject.clearButton);\n inputObject.clearButton = null;\n }\n }\n Input.setClearButton = setClearButton;\n /**\n * Removing the multiple attributes from the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.removeAttributes({ 'disabled': 'disabled', 'aria-disabled': 'true' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which are need to removed from the element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be removed.\n */\n function removeAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n else {\n element.removeAttribute(key);\n }\n }\n }\n Input.removeAttributes = removeAttributes;\n /**\n * Adding the multiple attributes to the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.addAttributes({ 'id': 'inputpopup' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which is added to element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be added.\n */\n function addAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = attrs[\"\" + key];\n }\n else {\n element.setAttribute(key, attrs[\"\" + key]);\n }\n }\n }\n Input.addAttributes = addAttributes;\n function removeFloating(input) {\n var container = input.container;\n if (!isNullOrUndefined(container) && container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n var inputEle = container.querySelector('textarea') ? container.querySelector('textarea') :\n container.querySelector('input');\n var placeholder = container.querySelector('.' + CLASSNAMES.FLOATTEXT).textContent;\n var clearButton = container.querySelector('.e-clear-icon') !== null;\n detach(container.querySelector('.' + CLASSNAMES.FLOATLINE));\n detach(container.querySelector('.' + CLASSNAMES.FLOATTEXT));\n classList(container, [CLASSNAMES.INPUTGROUP], [CLASSNAMES.FLOATINPUT]);\n unwireFloatingEvents(inputEle);\n attributes(inputEle, { 'placeholder': placeholder });\n inputEle.classList.add(CLASSNAMES.INPUT);\n if (!clearButton && inputEle.tagName === 'INPUT') {\n inputEle.removeAttribute('required');\n }\n }\n }\n Input.removeFloating = removeFloating;\n function addFloating(input, type, placeholder, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container = closest(input, '.' + CLASSNAMES.INPUTGROUP);\n floatType = type;\n if (type !== 'Never') {\n var customTag = container.tagName;\n customTag = customTag !== 'DIV' && customTag !== 'SPAN' ? customTag : null;\n var args = { element: input, floatLabelType: type,\n customTag: customTag, properties: { placeholder: placeholder } };\n var iconEle = container.querySelector('.e-clear-icon');\n var inputObj = { container: container };\n input.classList.remove(CLASSNAMES.INPUT);\n createFloatingInput(args, inputObj, makeElement);\n createSpanElement(inputObj.container, makeElement);\n calculateWidth(args.element, inputObj.container);\n var isPrependIcon = container.classList.contains('e-float-icon-left');\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n var inputWrap = container.querySelector('.e-input-in-wrap');\n iconEle = inputWrap.querySelector('.e-input-group-icon');\n }\n else {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n else {\n var floatLine = container.querySelector('.' + CLASSNAMES.FLOATLINE);\n var floatText = container.querySelector('.' + CLASSNAMES.FLOATTEXT);\n var wrapper = isPrependIcon ? container.querySelector('.e-input-in-wrap') : container;\n wrapper.insertBefore(input, iconEle);\n wrapper.insertBefore(floatLine, iconEle);\n wrapper.insertBefore(floatText, iconEle);\n }\n }\n checkFloatLabelType(type, input.parentElement);\n }\n Input.addFloating = addFloating;\n /**\n * Create the span inside the label and add the label text into the span textcontent\n * ```\n * E.g : Input.createSpanElement(inputObject, makeElement);\n * ```\n *\n * @param {InputObject} inputObject\n * - Element which is need to get the label\n * @param {createElementParams} makeElement\n * - Element which is need to create the span\n */\n function createSpanElement(inputObject, makeElement) {\n if (inputObject.classList.contains('e-outline') && inputObject.getElementsByClassName('e-float-text')[0]) {\n var labelSpanElement = makeElement('span', { className: CLASSNAMES.FLOATTEXTCONTENT });\n labelSpanElement.innerHTML = inputObject.getElementsByClassName('e-float-text')[0].innerHTML;\n inputObject.getElementsByClassName('e-float-text')[0].innerHTML = '';\n inputObject.getElementsByClassName('e-float-text')[0].appendChild(labelSpanElement);\n }\n }\n Input.createSpanElement = createSpanElement;\n /**\n * Enable or Disable the ripple effect on the icons inside the Input. Ripple effect is only applicable for material theme.\n * ```\n * E.g : Input.setRipple(true, [inputObjects]);\n * ```\n *\n * @param {boolean} isRipple\n * - Boolean value to specify whether to enable the ripple effect.\n * @param {InputObject[]} inputObj\n * - Specify the collection of input objects.\n */\n function setRipple(isRipple, inputObj) {\n for (var i = 0; i < inputObj.length; i++) {\n _internalRipple(isRipple, inputObj[parseInt(i.toString())].container);\n }\n }\n Input.setRipple = setRipple;\n function _internalRipple(isRipple, container, button) {\n var argsButton = [];\n argsButton.push(button);\n var buttons = isNullOrUndefined(button) ?\n container.querySelectorAll('.e-input-group-icon') : argsButton;\n if (isRipple && buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString())].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[parseInt(index.toString())].addEventListener('mouseup', _onMouseUpRipple, false);\n }\n }\n else if (buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString())].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[parseInt(index.toString())].removeEventListener('mouseup', _onMouseUpRipple, this);\n }\n }\n }\n function _onMouseRipple(container, button) {\n if (!container.classList.contains('e-disabled') && !container.querySelector('input').readOnly) {\n button.classList.add('e-input-btn-ripple');\n }\n }\n function _onMouseDownRipple() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = this;\n var parentEle = this.parentElement;\n while (!parentEle.classList.contains('e-input-group')) {\n parentEle = parentEle.parentElement;\n }\n _onMouseRipple(parentEle, ele);\n }\n function _onMouseUpRipple() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = this;\n setTimeout(function () {\n ele.classList.remove('e-input-btn-ripple');\n }, 500);\n }\n function createIconEle(iconClass, makeElement) {\n var button = makeElement('span', { className: iconClass });\n button.classList.add('e-input-group-icon');\n return button;\n }\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.addIcon('append', 'e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} position - Specify the icon placement on the input.Possible values are append and prepend.\n * @param {string | string[]} icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} input - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function addIcon(position, icons, container, input, internalCreate) {\n /* eslint-enable @typescript-eslint/indent */\n var result = typeof (icons) === 'string' ? icons.split(',')\n : icons;\n if (position.toLowerCase() === 'append') {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var icon = result_1[_i];\n appendSpan(icon, container, internalCreate);\n }\n }\n else {\n for (var _a = 0, result_2 = result; _a < result_2.length; _a++) {\n var icon = result_2[_a];\n prependSpan(icon, container, input, internalCreate);\n }\n }\n if (container.getElementsByClassName('e-input-group-icon')[0] && container.getElementsByClassName('e-float-text-overflow')[0]) {\n container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n }\n Input.addIcon = addIcon;\n /**\n * Creates a new span element with the given icons added and prepend it in input element.\n * ```\n * E.g : Input.prependSpan('e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} inputElement - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function prependSpan(iconClass, container, inputElement, internalCreateElement) {\n /* eslint-enable @typescript-eslint/indent */\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n container.classList.add('e-float-icon-left');\n var innerWrapper = container.querySelector('.e-input-in-wrap');\n if (isNullOrUndefined(innerWrapper)) {\n innerWrapper = makeElement('span', { className: 'e-input-in-wrap' });\n inputElement.parentNode.insertBefore(innerWrapper, inputElement);\n var result = container.querySelectorAll(inputElement.tagName + ' ~ *');\n innerWrapper.appendChild(inputElement);\n for (var i = 0; i < result.length; i++) {\n var element = result[parseInt(i.toString())];\n var parentElement = innerWrapper.parentElement;\n if (!(element.classList.contains('e-float-line')) || (!(parentElement && parentElement.classList.contains('e-filled')) && parentElement)) {\n innerWrapper.appendChild(element);\n }\n }\n }\n innerWrapper.parentNode.insertBefore(button, innerWrapper);\n _internalRipple(true, container, button);\n return button;\n }\n Input.prependSpan = prependSpan;\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.appendSpan('e-icon-spin', inputObj.container);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n */\n function appendSpan(iconClass, container, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n var wrap = (container.classList.contains('e-float-icon-left')) ? container.querySelector('.e-input-in-wrap') :\n container;\n wrap.appendChild(button);\n _internalRipple(true, container, button);\n return button;\n }\n Input.appendSpan = appendSpan;\n function validateInputType(containerElement, input) {\n if (input.type === 'hidden') {\n containerElement.classList.add('e-hidden');\n }\n else if (containerElement.classList.contains('e-hidden')) {\n containerElement.classList.remove('e-hidden');\n }\n }\n Input.validateInputType = validateInputType;\n})(Input || (Input = {}));\n/* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Property, Event, Browser, L10n, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getValue, formatUnit, setValue, merge } from '@syncfusion/ej2-base';\nimport { Internationalization, getNumericObject } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar ROOT = 'e-control-wrapper e-numeric';\nvar SPINICON = 'e-input-group-icon';\nvar SPINUP = 'e-spin-up';\nvar SPINDOWN = 'e-spin-down';\nvar ERROR = 'e-error';\nvar INCREMENT = 'increment';\nvar DECREMENT = 'decrement';\nvar INTREGEXP = new RegExp('^(-)?(\\\\d*)$');\nvar DECIMALSEPARATOR = '.';\nvar COMPONENT = 'e-numerictextbox';\nvar CONTROL = 'e-control';\nvar NUMERIC_FOCUS = 'e-input-focus';\nvar HIDDENELEMENT = 'e-numeric-hidden';\nvar wrapperAttributes = ['title', 'style', 'class'];\nvar selectionTimeOut = 0;\n/**\n * Represents the NumericTextBox component that allows the user to enter only numeric values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar NumericTextBox = /** @class */ (function (_super) {\n __extends(NumericTextBox, _super);\n /**\n *\n * @param {NumericTextBoxModel} options - Specifies the NumericTextBox model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function NumericTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isVue = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isDynamicChange = false;\n _this.numericOptions = options;\n return _this;\n }\n NumericTextBox.prototype.preRender = function () {\n this.isPrevFocused = false;\n this.decimalSeparator = '.';\n // eslint-disable-next-line no-useless-escape\n this.intRegExp = new RegExp('/^(-)?(\\d*)$/');\n this.isCalled = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formEle = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n input.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n else if (attributeName === 'class') {\n input.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-numerictextbox');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n attributes(this.element, { 'role': 'spinbutton', 'tabindex': '0', 'autocomplete': 'off' });\n var localeText = {\n incrementTitle: 'Increment value', decrementTitle: 'Decrement value', placeholder: this.placeholder\n };\n this.l10n = new L10n('numerictextbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('numerictextbox'));\n }\n this.isValidState = true;\n this.inputStyle = null;\n this.inputName = null;\n this.cultureInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.prevValue = this.value;\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.formEle) {\n this.inputEleValue = this.value;\n }\n this.validateMinMax();\n this.validateStep();\n if (this.placeholder === null) {\n this.updatePlaceholder();\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n this.createWrapper();\n if (this.showSpinButton) {\n this.spinBtnCreation();\n }\n this.setElementWidth(this.width);\n if (!this.container.classList.contains('e-input-group')) {\n this.container.classList.add('e-input-group');\n }\n this.changeValue(this.value === null || isNaN(this.value) ?\n null : this.strictMode ? this.trimValue(this.value) : this.value);\n this.wireEvents();\n if (this.value !== null && !isNaN(this.value)) {\n if (this.decimals) {\n this.setProperties({ value: this.roundNumber(this.value, this.decimals) }, true);\n }\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n this.hiddenInput.setAttribute('value', this.hiddenInput.value);\n }\n this.elementPrevValue = this.element.value;\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n }\n };\n NumericTextBox.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'step', 'disabled', 'readonly', 'style', 'name', 'placeholder'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(prop) === 'disabled' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(prop) === 'readonly' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['value'] === undefined)) || isDynamic) {\n var setNumber = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n this.setProperties(setValue(prop, setNumber, {}), !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['min'] === undefined)) || isDynamic) {\n var minValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (minValue !== null && !isNaN(minValue)) {\n this.setProperties(setValue(prop, minValue, {}), !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['max'] === undefined)) || isDynamic) {\n var maxValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (maxValue !== null && !isNaN(maxValue)) {\n this.setProperties(setValue(prop, maxValue, {}), !isDynamic);\n }\n }\n break;\n case 'step':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['step'] === undefined)) || isDynamic) {\n var stepValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (stepValue !== null && !isNaN(stepValue)) {\n this.setProperties(setValue(prop, stepValue, {}), !isDynamic);\n }\n }\n break;\n case 'style':\n this.inputStyle = this.element.getAttribute(prop);\n break;\n case 'name':\n this.inputName = this.element.getAttribute(prop);\n break;\n default:\n {\n var value = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if ((value !== null && !isNaN(value)) || (prop === 'value')) {\n this.setProperties(setValue(prop, value, {}), true);\n }\n }\n break;\n }\n }\n }\n };\n NumericTextBox.prototype.updatePlaceholder = function () {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n };\n NumericTextBox.prototype.initCultureFunc = function () {\n this.instance = new Internationalization(this.locale);\n };\n NumericTextBox.prototype.initCultureInfo = function () {\n this.cultureInfo.format = this.format;\n if (getValue('currency', this) !== null) {\n setValue('currency', this.currency, this.cultureInfo);\n this.setProperties({ currencyCode: this.currency }, true);\n }\n };\n /* Wrapper creation */\n NumericTextBox.prototype.createWrapper = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getNumericValidClassList(this.cssClass);\n }\n var inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n enabled: this.enabled\n }\n }, this.createElement);\n this.inputWrapper = inputObj;\n this.container = inputObj.container;\n this.container.setAttribute('class', ROOT + ' ' + this.container.getAttribute('class'));\n this.updateHTMLAttrToWrapper();\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n this.hiddenInput = (this.createElement('input', { attrs: { type: 'text',\n 'validateHidden': 'true', 'class': HIDDENELEMENT } }));\n this.inputName = this.inputName !== null ? this.inputName : this.element.id;\n this.element.removeAttribute('name');\n if (this.isAngular && this.angularTagName === 'EJS-NUMERICTEXTBOX' && this.cloneElement.id.length > 0) {\n attributes(this.hiddenInput, { 'name': this.cloneElement.id });\n }\n else {\n attributes(this.hiddenInput, { 'name': this.inputName });\n }\n this.container.insertBefore(this.hiddenInput, this.container.childNodes[1]);\n this.updateDataAttribute(false);\n if (this.inputStyle !== null) {\n attributes(this.container, { 'style': this.inputStyle });\n }\n };\n NumericTextBox.prototype.updateDataAttribute = function (isDynamic) {\n var attr = {};\n if (!isDynamic) {\n for (var a = 0; a < this.element.attributes.length; a++) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n else {\n attr = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attr); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key.indexOf('data') === 0) {\n this.hiddenInput.setAttribute(key, attr[\"\" + key]);\n }\n }\n };\n NumericTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n };\n NumericTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getNumericValidClassList(newClass), [this.container], this.getNumericValidClassList(oldClass));\n };\n NumericTextBox.prototype.getNumericValidClassList = function (numericClassName) {\n var result = numericClassName;\n if (!isNullOrUndefined(numericClassName) && numericClassName !== '') {\n result = (numericClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n NumericTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValue = this.getNumericValidClassList(this.htmlAttributes[\"\" + pro]);\n if (updatedClassValue !== '') {\n addClass([this.container], updatedClassValue.split(' '));\n }\n }\n else if (pro === 'style') {\n var numericStyle = this.container.getAttribute(pro);\n numericStyle = !isNullOrUndefined(numericStyle) ? (numericStyle + this.htmlAttributes[\"\" + pro]) :\n this.htmlAttributes[\"\" + pro];\n this.container.setAttribute(pro, numericStyle);\n }\n else {\n this.container.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n }\n };\n NumericTextBox.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n /* Spinner creation */\n NumericTextBox.prototype.spinBtnCreation = function () {\n this.spinDown = Input.appendSpan(SPINICON + ' ' + SPINDOWN, this.container, this.createElement);\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle')\n });\n this.spinUp = Input.appendSpan(SPINICON + ' ' + SPINUP, this.container, this.createElement);\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle')\n });\n this.wireSpinBtnEvents();\n };\n NumericTextBox.prototype.validateMinMax = function () {\n if (!(typeof (this.min) === 'number' && !isNaN(this.min))) {\n this.setProperties({ min: -(Number.MAX_VALUE) }, true);\n }\n if (!(typeof (this.max) === 'number' && !isNaN(this.max))) {\n this.setProperties({ max: Number.MAX_VALUE }, true);\n }\n if (this.decimals !== null) {\n if (this.min !== -(Number.MAX_VALUE)) {\n this.setProperties({ min: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.min)) }, true);\n }\n if (this.max !== (Number.MAX_VALUE)) {\n this.setProperties({ max: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.max)) }, true);\n }\n }\n this.setProperties({ min: this.min > this.max ? this.max : this.min }, true);\n if (this.min !== -(Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemin': this.min.toString() });\n }\n if (this.max !== (Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemax': this.max.toString() });\n }\n };\n NumericTextBox.prototype.formattedValue = function (decimals, value) {\n return this.instance.getNumberFormat({\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals, useGrouping: false\n })(value);\n };\n NumericTextBox.prototype.validateStep = function () {\n if (this.decimals !== null) {\n this.setProperties({ step: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.step)) }, true);\n }\n };\n NumericTextBox.prototype.action = function (operation, event) {\n this.isInteract = true;\n var value = this.isFocused ? this.instance.getNumberParser({ format: 'n' })(this.element.value) : this.value;\n this.changeValue(this.performAction(value, this.step, operation));\n this.raiseChangeEvent(event);\n };\n NumericTextBox.prototype.checkErrorClass = function () {\n if (this.isValidState) {\n removeClass([this.container], ERROR);\n }\n else {\n addClass([this.container], ERROR);\n }\n attributes(this.element, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n NumericTextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n NumericTextBox.prototype.resetHandler = function (e) {\n e.preventDefault();\n if (!(this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide')) || this.inputWrapper.container.classList.contains('e-static-clear')) {\n this.clear(e);\n }\n this.isInteract = true;\n this.raiseChangeEvent(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericTextBox.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.setElementValue('');\n this.hiddenInput.value = '';\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.resetFormHandler = function () {\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.updateValue(null);\n }\n else {\n this.updateValue(this.inputEleValue);\n }\n };\n NumericTextBox.prototype.setSpinButton = function () {\n if (!isNullOrUndefined(this.spinDown)) {\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n }\n if (!isNullOrUndefined(this.spinUp)) {\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n }\n };\n NumericTextBox.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'keypress', this.keyPressHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'paste', this.pasteHandler, this);\n if (this.enabled) {\n this.bindClearEvent();\n if (this.formEle) {\n EventHandler.add(this.formEle, 'reset', this.resetFormHandler, this);\n }\n }\n };\n NumericTextBox.prototype.wireSpinBtnEvents = function () {\n /* bind spin button events */\n EventHandler.add(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n };\n NumericTextBox.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keypress', this.keyPressHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'paste', this.pasteHandler);\n if (this.formEle) {\n EventHandler.remove(this.formEle, 'reset', this.resetFormHandler);\n }\n };\n NumericTextBox.prototype.unwireSpinBtnEvents = function () {\n /* unbind spin button events */\n EventHandler.remove(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n };\n NumericTextBox.prototype.changeHandler = function (event) {\n event.stopPropagation();\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n };\n NumericTextBox.prototype.raiseChangeEvent = function (event) {\n if (this.prevValue !== this.value || this.prevValue !== this.inputValue) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.value, previousValue: this.prevValue, isInteracted: this.isInteract,\n isInteraction: this.isInteract, event: event };\n if (event) {\n this.changeEventArgs.event = event;\n }\n if (this.changeEventArgs.event === undefined) {\n this.changeEventArgs.isInteracted = false;\n this.changeEventArgs.isInteraction = false;\n }\n merge(eventArgs, this.changeEventArgs);\n this.prevValue = this.value;\n this.isInteract = false;\n this.elementPrevValue = this.element.value;\n this.preventChange = false;\n this.trigger('change', eventArgs);\n }\n };\n NumericTextBox.prototype.pasteHandler = function () {\n var _this = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var beforeUpdate = this.element.value;\n setTimeout(function () {\n if (!_this.numericRegex().test(_this.element.value)) {\n _this.setElementValue(beforeUpdate);\n }\n });\n };\n NumericTextBox.prototype.preventHandler = function () {\n var _this = this;\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n setTimeout(function () {\n if (_this.element.selectionStart > 0) {\n var currentPos = _this.element.selectionStart;\n var prevPos = _this.element.selectionStart - 1;\n var start = 0;\n var valArray = _this.element.value.split('');\n var numericObject = getNumericObject(_this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var ignoreKeyCode = decimalSeparator.charCodeAt(0);\n if (_this.element.value[prevPos] === ' ' && _this.element.selectionStart > 0 && !iOS) {\n if (isNullOrUndefined(_this.prevVal)) {\n _this.element.value = _this.element.value.trim();\n }\n else if (prevPos !== 0) {\n _this.element.value = _this.prevVal;\n }\n else if (prevPos === 0) {\n _this.element.value = _this.element.value.trim();\n }\n _this.element.setSelectionRange(prevPos, prevPos);\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 1]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 1]) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n _this.element.setSelectionRange(prevPos, prevPos);\n if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) && _this.element.selectionStart > 0\n && _this.element.value.length) {\n _this.preventHandler();\n }\n }\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 2])) && _this.element.selectionStart > 1 &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 2]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 2]) &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.setSelectionRange(prevPos, prevPos);\n _this.nextEle = _this.element.value[_this.element.selectionStart];\n _this.cursorPosChanged = true;\n _this.preventHandler();\n }\n }\n if (_this.cursorPosChanged === true && _this.element.value[_this.element.selectionStart] === _this.nextEle &&\n isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1]))) {\n _this.element.setSelectionRange(_this.element.selectionStart + 1, _this.element.selectionStart + 1);\n _this.cursorPosChanged = false;\n _this.nextEle = null;\n }\n if (_this.element.value.trim() === '') {\n _this.element.setSelectionRange(start, start);\n }\n if (_this.element.selectionStart > 0) {\n if ((_this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === 45) && _this.element.selectionStart > 1) {\n if (isNullOrUndefined(_this.prevVal)) {\n // eslint-disable-next-line no-self-assign\n _this.element.value = _this.element.value;\n }\n else {\n _this.element.value = _this.prevVal;\n }\n _this.element.setSelectionRange(_this.element.selectionStart, _this.element.selectionStart);\n }\n if (_this.element.value[_this.element.selectionStart - 1] === decimalSeparator && _this.decimals === 0 && _this.validateDecimalOnType) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n }\n }\n _this.prevVal = _this.element.value;\n }\n });\n };\n NumericTextBox.prototype.keyUpHandler = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n if (!iOS && Browser.isDevice) {\n this.preventHandler();\n }\n var parseValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parseValue = parseValue === null || isNaN(parseValue) ? null : parseValue;\n this.hiddenInput.value = parseValue || parseValue === 0 ? parseValue.toString() : null;\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.inputHandler = function (event) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var numerictextboxObj = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n var fireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n if ((fireFox || iOS) && Browser.isDevice) {\n this.preventHandler();\n }\n /* istanbul ignore next */\n if (this.isAngular\n && this.element.value !== getValue('decimal', getNumericObject(this.locale))\n && this.element.value !== getValue('minusSign', getNumericObject(this.locale))) {\n var parsedValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parsedValue = isNaN(parsedValue) ? null : parsedValue;\n numerictextboxObj.localChange({ value: parsedValue });\n this.preventChange = true;\n }\n if (this.isVue) {\n var current = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n var previous = this.instance.getNumberParser({ format: 'n' })(this.elementPrevValue);\n //EJ2-54963-if type \".\" or \".0\" or \"-.0\" it converts to \"0\" automatically when binding v-model\n var nonZeroRegex = new RegExp('[^0-9]+$');\n if (nonZeroRegex.test(this.element.value) || ((this.elementPrevValue.indexOf('.') !== -1 || this.elementPrevValue.indexOf('-') !== -1) && this.element.value[this.element.value.length - 1] === '0')) {\n current = this.value;\n }\n var eventArgs = {\n event: event,\n value: (current === null || isNaN(current) ? null : current),\n previousValue: (previous === null || isNaN(previous) ? null : previous)\n };\n this.preventChange = true;\n this.elementPrevValue = this.element.value;\n this.trigger('input', eventArgs);\n }\n };\n NumericTextBox.prototype.keyDownHandler = function (event) {\n if (!this.readonly) {\n switch (event.keyCode) {\n case 38:\n event.preventDefault();\n this.action(INCREMENT, event);\n break;\n case 40:\n event.preventDefault();\n this.action(DECREMENT, event);\n break;\n default: break;\n }\n }\n };\n NumericTextBox.prototype.performAction = function (value, step, operation) {\n if (value === null || isNaN(value)) {\n value = 0;\n }\n var updatedValue = operation === INCREMENT ? value + step : value - step;\n updatedValue = this.correctRounding(value, step, updatedValue);\n return this.strictMode ? this.trimValue(updatedValue) : updatedValue;\n };\n NumericTextBox.prototype.correctRounding = function (value, step, result) {\n var floatExp = new RegExp('[,.](.*)');\n var floatValue = floatExp.test(value.toString());\n var floatStep = floatExp.test(step.toString());\n if (floatValue || floatStep) {\n var valueCount = floatValue ? floatExp.exec(value.toString())[0].length : 0;\n var stepCount = floatStep ? floatExp.exec(step.toString())[0].length : 0;\n var max = Math.max(valueCount, stepCount);\n return value = this.roundValue(result, max);\n }\n return result;\n };\n NumericTextBox.prototype.roundValue = function (result, precision) {\n precision = precision || 0;\n var divide = Math.pow(10, precision);\n return result *= divide, result = Math.round(result) / divide;\n };\n NumericTextBox.prototype.updateValue = function (value, event) {\n if (event) {\n this.isInteract = true;\n }\n if (value !== null && !isNaN(value)) {\n if (this.decimals) {\n value = this.roundNumber(value, this.decimals);\n }\n }\n this.inputValue = value;\n this.changeValue(value === null || isNaN(value) ? null : this.strictMode ? this.trimValue(value) : value);\n /* istanbul ignore next */\n if (!this.isDynamicChange) {\n this.raiseChangeEvent(event);\n }\n };\n NumericTextBox.prototype.updateCurrency = function (prop, propVal) {\n setValue(prop, propVal, this.cultureInfo);\n this.updateValue(this.value);\n };\n NumericTextBox.prototype.changeValue = function (value) {\n if (!(value || value === 0)) {\n value = null;\n this.setProperties({ value: value }, true);\n }\n else {\n var numberOfDecimals = this.getNumberOfDecimals(value);\n this.setProperties({ value: this.roundNumber(value, numberOfDecimals) }, true);\n }\n this.modifyText();\n if (!this.strictMode) {\n this.validateState();\n }\n };\n NumericTextBox.prototype.modifyText = function () {\n if (this.value || this.value === 0) {\n var value = this.formatNumber();\n var elementValue = this.isFocused ? value : this.instance.getNumberFormat(this.cultureInfo)(this.value);\n this.setElementValue(elementValue);\n attributes(this.element, { 'aria-valuenow': value });\n this.hiddenInput.value = this.value.toString();\n if (this.value !== null && this.serverDecimalSeparator) {\n this.hiddenInput.value = this.hiddenInput.value.replace('.', this.serverDecimalSeparator);\n }\n }\n else {\n this.setElementValue('');\n this.element.removeAttribute('aria-valuenow');\n this.hiddenInput.value = null;\n }\n };\n NumericTextBox.prototype.setElementValue = function (val, element) {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n };\n NumericTextBox.prototype.validateState = function () {\n this.isValidState = true;\n if (this.value || this.value === 0) {\n this.isValidState = !(this.value > this.max || this.value < this.min);\n }\n this.checkErrorClass();\n };\n NumericTextBox.prototype.getNumberOfDecimals = function (value) {\n var numberOfDecimals;\n // eslint-disable-next-line no-useless-escape\n var EXPREGEXP = new RegExp('[eE][\\-+]?([0-9]+)');\n var valueString = value.toString();\n if (EXPREGEXP.test(valueString)) {\n var result = EXPREGEXP.exec(valueString);\n if (!isNullOrUndefined(result)) {\n valueString = value.toFixed(Math.min(parseInt(result[1], 10), 20));\n }\n }\n var decimalPart = valueString.split('.')[1];\n numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n if (this.decimals !== null) {\n numberOfDecimals = numberOfDecimals < this.decimals ? numberOfDecimals : this.decimals;\n }\n return numberOfDecimals;\n };\n NumericTextBox.prototype.formatNumber = function () {\n var numberOfDecimals = this.getNumberOfDecimals(this.value);\n return this.instance.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(this.value);\n };\n NumericTextBox.prototype.trimValue = function (value) {\n if (value > this.max) {\n return this.max;\n }\n if (value < this.min) {\n return this.min;\n }\n return value;\n };\n NumericTextBox.prototype.roundNumber = function (value, precision) {\n var result = value;\n var decimals = precision || 0;\n var result1 = result.toString().split('e');\n result = Math.round(Number(result1[0] + 'e' + (result1[1] ? (Number(result1[1]) + decimals) : decimals)));\n var result2 = result.toString().split('e');\n result = Number(result2[0] + 'e' + (result2[1] ? (Number(result2[1]) - decimals) : -decimals));\n return Number(result.toFixed(decimals));\n };\n NumericTextBox.prototype.cancelEvent = function (event) {\n event.preventDefault();\n return false;\n };\n NumericTextBox.prototype.keyPressHandler = function (event) {\n if (!this.enabled || this.readonly) {\n return true;\n }\n if (!Browser.isDevice && Browser.info.version === '11.0' && event.keyCode === 13) {\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n return true;\n }\n if (event.which === 0 || event.metaKey || event.ctrlKey || event.keyCode === 8 || event.keyCode === 13) {\n return true;\n }\n var currentChar = String.fromCharCode(event.which);\n var decimalSeparator = getValue('decimal', getNumericObject(this.locale));\n var isAlterNumPadDecimalChar = event.code === 'NumpadDecimal' && currentChar !== decimalSeparator;\n //EJ2-59813-replace the culture decimal separator value with numberpad decimal separator value when culture decimal separator and numberpad decimal separator are different\n if (isAlterNumPadDecimalChar) {\n currentChar = decimalSeparator;\n }\n var text = this.element.value;\n text = text.substring(0, this.element.selectionStart) + currentChar + text.substring(this.element.selectionEnd);\n if (!this.numericRegex().test(text)) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n else {\n //EJ2-59813-update the numberpad decimal separator and update the cursor position\n if (isAlterNumPadDecimalChar) {\n var start = this.element.selectionStart + 1;\n this.element.value = text;\n this.element.setSelectionRange(start, start);\n event.preventDefault();\n event.stopPropagation();\n }\n return true;\n }\n };\n NumericTextBox.prototype.numericRegex = function () {\n var numericObject = getNumericObject(this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var fractionRule = '*';\n if (decimalSeparator === DECIMALSEPARATOR) {\n decimalSeparator = '\\\\' + decimalSeparator;\n }\n if (this.decimals === 0 && this.validateDecimalOnType) {\n return INTREGEXP;\n }\n if (this.decimals && this.validateDecimalOnType) {\n fractionRule = '{0,' + this.decimals + '}';\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp('^(-)?(((\\\\d+(' + decimalSeparator + '\\\\d' + fractionRule +\n ')?)|(' + decimalSeparator + '\\\\d' + fractionRule + ')))?$');\n };\n NumericTextBox.prototype.mouseWheel = function (event) {\n event.preventDefault();\n var delta;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rawEvent = event;\n if (rawEvent.wheelDelta) {\n delta = rawEvent.wheelDelta / 120;\n }\n else if (rawEvent.detail) {\n delta = -rawEvent.detail / 3;\n }\n if (delta > 0) {\n this.action(INCREMENT, event);\n }\n else if (delta < 0) {\n this.action(DECREMENT, event);\n }\n this.cancelEvent(event);\n };\n NumericTextBox.prototype.focusHandler = function (event) {\n var _this = this;\n clearTimeout(selectionTimeOut);\n this.focusEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('focus', this.focusEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n this.isFocused = true;\n removeClass([this.container], ERROR);\n this.prevValue = this.value;\n if ((this.value || this.value === 0)) {\n var formatValue_1 = this.formatNumber();\n this.setElementValue(formatValue_1);\n if (!this.isPrevFocused) {\n if (!Browser.isDevice && Browser.info.version === '11.0') {\n this.element.setSelectionRange(0, formatValue_1.length);\n }\n else {\n var delay = (Browser.isDevice && Browser.isIos) ? 600 : 0;\n selectionTimeOut = setTimeout(function () {\n _this.element.setSelectionRange(0, formatValue_1.length);\n }, delay);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.add(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel, this);\n }\n };\n NumericTextBox.prototype.focusOutHandler = function (event) {\n var _this = this;\n this.blurEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('blur', this.blurEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isPrevFocused) {\n event.preventDefault();\n if (Browser.isDevice) {\n var value_1 = this.element.value;\n this.element.focus();\n this.isPrevFocused = false;\n var ele_1 = this.element;\n setTimeout(function () {\n _this.setElementValue(value_1, ele_1);\n }, 200);\n }\n }\n else {\n this.isFocused = false;\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput);\n if (!Browser.isDevice) {\n EventHandler.remove(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel);\n }\n }\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var focusEvent = document.createEvent('FocusEvent');\n focusEvent.initEvent('focusout', false, true);\n element.dispatchEvent(focusEvent);\n }\n };\n NumericTextBox.prototype.mouseDownOnSpinner = function (event) {\n var _this = this;\n if (this.isFocused) {\n this.isPrevFocused = true;\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var result = this.getElementData(event);\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.add(target, 'mouseleave', this.mouseUpClick, this);\n this.timeOut = setInterval(function () {\n _this.isCalled = true;\n _this.action(action, event);\n }, 150);\n EventHandler.add(document, 'mouseup', this.mouseUpClick, this);\n };\n NumericTextBox.prototype.touchMoveOnSpinner = function (event) {\n var target;\n if (event.type === 'touchmove') {\n var touchEvent = event.touches;\n target = touchEvent.length && document.elementFromPoint(touchEvent[0].pageX, touchEvent[0].pageY);\n }\n else {\n target = document.elementFromPoint(event.clientX, event.clientY);\n }\n if (!(target.classList.contains(SPINICON))) {\n clearInterval(this.timeOut);\n }\n };\n NumericTextBox.prototype.mouseUpOnSpinner = function (event) {\n this.prevValue = this.value;\n if (this.isPrevFocused) {\n this.element.focus();\n if (!Browser.isDevice) {\n this.isPrevFocused = false;\n }\n }\n if (!Browser.isDevice) {\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.remove(target, 'mouseleave', this.mouseUpClick);\n if (!this.isCalled) {\n this.action(action, event);\n }\n this.isCalled = false;\n EventHandler.remove(document, 'mouseup', this.mouseUpClick);\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.getElementData = function (event) {\n if ((event.which && event.which === 3) || (event.button && event.button === 2)\n || !this.enabled || this.readonly) {\n return false;\n }\n clearInterval(this.timeOut);\n return true;\n };\n NumericTextBox.prototype.floatLabelTypeUpdate = function () {\n Input.removeFloating(this.inputWrapper);\n var hiddenInput = this.hiddenInput;\n this.hiddenInput.remove();\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n this.container.insertBefore(hiddenInput, this.container.childNodes[1]);\n };\n NumericTextBox.prototype.mouseUpClick = function (event) {\n event.stopPropagation();\n clearInterval(this.timeOut);\n this.isCalled = false;\n if (this.spinUp) {\n EventHandler.remove(this.spinUp, 'mouseleave', this.mouseUpClick);\n }\n if (this.spinDown) {\n EventHandler.remove(this.spinDown, 'mouseleave', this.mouseUpClick);\n }\n };\n /**\n * Increments the NumericTextBox value with the specified step value.\n *\n * @param {number} step - Specifies the value used to increment the NumericTextBox value.\n * if its not given then numeric value will be incremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.increment = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, INCREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Decrements the NumericTextBox value with specified step value.\n *\n * @param {number} step - Specifies the value used to decrement the NumericTextBox value.\n * if its not given then numeric value will be decremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.decrement = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, DECREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n NumericTextBox.prototype.destroy = function () {\n this.unwireEvents();\n detach(this.hiddenInput);\n if (this.showSpinButton) {\n this.unwireSpinBtnEvents();\n detach(this.spinUp);\n detach(this.spinDown);\n }\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'tabindex',\n 'aria-valuemin', 'aria-valuemax', 'aria-valuenow', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.container.insertAdjacentElement('afterend', this.element);\n detach(this.container);\n this.spinUp = null;\n this.spinDown = null;\n this.container = null;\n this.hiddenInput = null;\n this.changeEventArgs = null;\n this.blurEventArgs = null;\n this.focusEventArgs = null;\n this.inputWrapper = null;\n Input.destroy();\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n *\n */\n NumericTextBox.prototype.getText = function () {\n return this.element.value;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n NumericTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {NumericTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {NumericTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.container]);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.updateDataAttribute(true);\n this.checkAttributes(true);\n Input.validateInputType(this.container, this.element);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.element);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'step':\n this.step = newProp.step;\n this.validateStep();\n break;\n case 'showSpinButton':\n this.updateSpinButton(newProp);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n this.floatLabelTypeUpdate();\n break;\n case 'value':\n this.isDynamicChange = (this.isAngular || this.isVue) && this.preventChange;\n this.updateValue(newProp.value);\n if (this.isDynamicChange) {\n this.preventChange = false;\n this.isDynamicChange = false;\n }\n break;\n case 'min':\n case 'max':\n setValue(prop, getValue(prop, newProp), this);\n this.validateMinMax();\n this.updateValue(this.value);\n break;\n case 'strictMode':\n this.strictMode = newProp.strictMode;\n this.updateValue(this.value);\n this.validateState();\n break;\n case 'locale':\n this.initCultureFunc();\n this.l10n.setLocale(this.locale);\n this.setSpinButton();\n this.updatePlaceholder();\n Input.setPlaceholder(this.placeholder, this.element);\n this.updateValue(this.value);\n break;\n case 'currency':\n {\n var propVal = getValue(prop, newProp);\n this.setProperties({ currencyCode: propVal }, true);\n this.updateCurrency(prop, propVal);\n }\n break;\n case 'currencyCode':\n {\n var propValue = getValue(prop, newProp);\n this.setProperties({ currency: propValue }, true);\n this.updateCurrency('currency', propValue);\n }\n break;\n case 'format':\n setValue(prop, getValue(prop, newProp), this);\n this.initCultureInfo();\n this.updateValue(this.value);\n break;\n case 'decimals':\n this.decimals = newProp.decimals;\n this.updateValue(this.value);\n }\n }\n };\n NumericTextBox.prototype.updateClearButton = function (newProp) {\n Input.setClearButton(newProp.showClearButton, this.element, this.inputWrapper, undefined, this.createElement);\n this.bindClearEvent();\n };\n NumericTextBox.prototype.updateSpinButton = function (newProp) {\n if (newProp.showSpinButton) {\n this.spinBtnCreation();\n }\n else {\n detach(this.spinUp);\n detach(this.spinDown);\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n NumericTextBox.prototype.getModuleName = function () {\n return 'numerictextbox';\n };\n __decorate([\n Property('')\n ], NumericTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(-(Number.MAX_VALUE))\n ], NumericTextBox.prototype, \"min\", void 0);\n __decorate([\n Property(Number.MAX_VALUE)\n ], NumericTextBox.prototype, \"max\", void 0);\n __decorate([\n Property(1)\n ], NumericTextBox.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], NumericTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"showSpinButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('n2')\n ], NumericTextBox.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"decimals\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currency\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currencyCode\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"validateDecimalOnType\", void 0);\n __decorate([\n Property('Never')\n ], NumericTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"blur\", void 0);\n NumericTextBox = __decorate([\n NotifyPropertyChanges\n ], NumericTextBox);\n return NumericTextBox;\n}(Component));\nexport { NumericTextBox };\n","/* eslint-disable no-inner-declarations */\nimport { extend, merge, isNullOrUndefined, getValue, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { attributes, prepend, isVisible, append, addClass } from '@syncfusion/ej2-base';\nimport { compile } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nexport var cssClass = {\n li: 'e-list-item',\n ul: 'e-list-parent e-ul',\n group: 'e-list-group-item',\n icon: 'e-list-icon',\n text: 'e-list-text',\n check: 'e-list-check',\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: 'e-list-url',\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: 'e-list-img',\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n};\n/**\n * Base List Generator\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var ListBase;\n(function (ListBase) {\n /**\n *\n * Default mapped fields.\n */\n ListBase.defaultMappedFields = {\n id: 'id',\n text: 'text',\n url: 'url',\n value: 'value',\n isChecked: 'isChecked',\n enabled: 'enabled',\n expanded: 'expanded',\n selected: 'selected',\n iconCss: 'iconCss',\n child: 'child',\n isVisible: 'isVisible',\n hasChildren: 'hasChildren',\n tooltip: 'tooltip',\n htmlAttributes: 'htmlAttributes',\n urlAttributes: 'urlAttributes',\n imageAttributes: 'imageAttributes',\n imageUrl: 'imageUrl',\n groupBy: null,\n sortBy: null\n };\n var defaultAriaAttributes = {\n level: 1,\n listRole: 'presentation',\n itemRole: 'presentation',\n groupItemRole: 'group',\n itemText: 'list-item',\n wrapperRole: 'presentation'\n };\n var defaultListBaseOptions = {\n showCheckBox: false,\n showIcon: false,\n enableHtmlSanitizer: false,\n expandCollapse: false,\n fields: ListBase.defaultMappedFields,\n ariaAttributes: defaultAriaAttributes,\n listClass: '',\n itemClass: '',\n processSubChild: false,\n sortOrder: 'None',\n template: null,\n groupTemplate: null,\n headerTemplate: null,\n expandIconClass: 'e-icon-collapsible',\n moduleName: 'list',\n expandIconPosition: 'Right',\n itemNavigable: false\n };\n /**\n * Function helps to created and return the UL Li element based on your data.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} createListFromJson - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, \n // eslint-disable-next-line\n options, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var type = typeofData(dataSource).typeof;\n if (type === 'string' || type === 'number') {\n return createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n }\n else {\n return createListFromJson(createElement, dataSource, options, ariaAttributes.level, isSingleLevel, componentInstance);\n }\n }\n ListBase.createList = createList;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, \n // tslint:disable-next-line\n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n return generateUL(createElement, subChild, null, options);\n }\n ListBase.createListFromArray = createListFromArray;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, \n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = [];\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n var li = void 0;\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n options: curOpt\n };\n curOpt.itemCreating(curData);\n }\n if (isSingleLevel) {\n li = generateSingleLevelLI(createElement, dataSource[i], undefined, null, null, [], null, id, i, options);\n }\n else {\n li = generateLI(createElement, dataSource[i], undefined, null, null, options, componentInstance);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n item: li,\n options: curOpt\n };\n curOpt.itemCreated(curData);\n }\n subChild.push(li);\n }\n return subChild;\n }\n ListBase.createListItemFromArray = createListItemFromArray;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} child - returns the list options that need to provide.\n */\n function createListItemFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var fields = (componentInstance &&\n (componentInstance.getModuleName() === 'listview' || componentInstance.getModuleName() === 'multiselect'))\n ? curOpt.fields : extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var id;\n var checkboxElement = [];\n if (level) {\n ariaAttributes.level = level;\n }\n var child = [];\n var li;\n var anchorElement;\n if (dataSource && dataSource.length && !isNullOrUndefined(typeofData(dataSource).item) &&\n // eslint-disable-next-line no-prototype-builtins\n !typeofData(dataSource).item.hasOwnProperty(fields.id)) {\n id = generateId(); // generate id for drop-down-list option.\n }\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], fields);\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreating(curData);\n }\n var curItem = dataSource[i];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], fields);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.id) && !isNullOrUndefined(fieldData[fields.id])) {\n id = fieldData[fields.id];\n }\n var innerEle = [];\n if (curOpt.showCheckBox) {\n if (curOpt.itemNavigable && (fieldData[fields.url] || fieldData[fields.urlAttributes])) {\n checkboxElement.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n else {\n innerEle.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n }\n if (isSingleLevel === true) {\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) && !isNullOrUndefined(fieldData[fields.iconCss])) {\n innerEle.push(createElement('span', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] }));\n }\n li = generateSingleLevelLI(createElement, curItem, fieldData, fields, curOpt.itemClass, innerEle, \n // eslint-disable-next-line no-prototype-builtins\n (curItem.hasOwnProperty('isHeader') &&\n curItem.isHeader) ? true : false, id, i, options);\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n }\n else {\n li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options, componentInstance);\n li.classList.add(cssClass.level + '-' + ariaAttributes.level);\n li.setAttribute('aria-level', ariaAttributes.level.toString());\n if (ariaAttributes.groupItemRole == 'presentation') {\n li.removeAttribute('aria-level');\n }\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.tooltip)) {\n li.setAttribute('title', fieldData[fields.tooltip]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n var attr = { src: fieldData[fields.imageUrl] };\n merge(attr, fieldData[fields.imageAttributes]);\n var imageElemnt = createElement('img', { className: cssClass.image, attrs: attr });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', imageElemnt);\n }\n else {\n prepend([imageElemnt], li.firstElementChild);\n }\n }\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) &&\n !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n var iconElement = createElement('div', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', iconElement);\n }\n else {\n prepend([iconElement], li.firstElementChild);\n }\n }\n if (innerEle.length) {\n prepend(innerEle, li.firstElementChild);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n processSubChild(createElement, fieldData, fields, dataSource, curOpt, li, ariaAttributes.level);\n }\n if (anchorElement) {\n addClass([li], [cssClass.navigable]);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n item: li,\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreated(curData);\n }\n checkboxElement = [];\n child.push(li);\n }\n return child;\n }\n ListBase.createListItemFromJson = createListItemFromJson;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var li = createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance);\n return generateUL(createElement, li, curOpt.listClass, options);\n }\n ListBase.createListFromJson = createListFromJson;\n /**\n * Return the next or previous visible element.\n *\n * @param {Element[]|NodeList} elementArray - An element array to find next or previous element.\n * @param {Element} li - An element to find next or previous after this element.\n * @param {boolean} isPrevious? - Specify when the need get previous element from array.\n */\n function getSiblingLI(elementArray, element, isPrevious) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n if (!elementArray || !elementArray.length) {\n return void 0;\n }\n var siblingLI;\n var liIndex;\n var liCollections = Array.prototype.slice.call(elementArray);\n if (element) {\n liIndex = indexOf(element, liCollections);\n }\n else {\n liIndex = (isPrevious === true ? liCollections.length : -1);\n }\n siblingLI = liCollections[liIndex + (isPrevious === true ? -1 : 1)];\n while (siblingLI && (!isVisible(siblingLI) || siblingLI.classList.contains(cssClass.disabled))) {\n liIndex = liIndex + (isPrevious === true ? -1 : 1);\n siblingLI = liCollections[liIndex];\n }\n return siblingLI;\n }\n ListBase.getSiblingLI = getSiblingLI;\n /**\n * Return the index of the li element\n *\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]} elementArray - An element array to find index of given li.\n */\n function indexOf(item, elementArray) {\n if (!elementArray || !item) {\n return void 0;\n }\n else {\n var liCollections = elementArray;\n liCollections = Array.prototype.slice.call(elementArray);\n return liCollections.indexOf(item);\n }\n }\n ListBase.indexOf = indexOf;\n /**\n * Returns the grouped data from given dataSource.\n *\n * @param {{Object}[]} dataSource - The JSON data which is necessary to process.\n * @param {FieldsMapping} fields - Fields that are mapped from the data source.\n * @param {SortOrder} sortOrder- Specifies final result sort order.\n */\n function groupDataSource(dataSource, fields, sortOrder) {\n if (sortOrder === void 0) { sortOrder = 'None'; }\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var cusQuery = new Query().group(curFields.groupBy);\n // need to remove once sorting issues fixed in DataManager\n cusQuery = addSorting(sortOrder, 'key', cusQuery);\n var ds = getDataSource(dataSource, cusQuery);\n dataSource = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n var grpItem = {};\n var hdr = 'isHeader';\n grpItem[curFields.text] = ds[j].key;\n grpItem[\"\" + hdr] = true;\n var newtext = curFields.text;\n if (newtext === 'id') {\n newtext = 'text';\n grpItem[\"\" + newtext] = ds[j].key;\n }\n grpItem._id = 'group-list-item-' + (ds[j].key ?\n ds[j].key.toString().trim() : 'undefined');\n grpItem.items = itemObj;\n dataSource.push(grpItem);\n for (var k = 0; k < itemObj.length; k++) {\n dataSource.push(itemObj[k]);\n }\n }\n return dataSource;\n }\n ListBase.groupDataSource = groupDataSource;\n /**\n * Returns a sorted query object.\n *\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {Query} query - Pass if any existing query.\n */\n function addSorting(sortOrder, sortBy, query) {\n if (query === void 0) { query = new Query(); }\n if (sortOrder === 'Ascending') {\n query.sortBy(sortBy, 'ascending', true);\n }\n else if (sortOrder === 'Descending') {\n query.sortBy(sortBy, 'descending', true);\n }\n else {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i].fn === 'onSortBy') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n ListBase.addSorting = addSorting;\n /**\n * Return an array of JSON Data that processed based on queries.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {Query} query - Specifies query that need to process.\n */\n function getDataSource(dataSource, query) {\n // eslint-disable-next-line\n return new DataManager(dataSource)\n .executeLocal(query);\n }\n ListBase.getDataSource = getDataSource;\n /**\n * Created JSON data based the UL and LI element\n *\n * @param {HTMLElement|Element} element - UL element that need to convert as a JSON\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function createJsonFromElement(element, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var curEle = element.cloneNode(true);\n // eslint-disable-next-line\n var jsonAr = [];\n curEle.classList.add('json-parent');\n var childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (var i = 0; i < childs.length; i++) {\n var li = childs[i];\n var anchor = li.querySelector('a');\n var ul = li.querySelector('ul');\n // eslint-disable-next-line\n var json = {};\n var childNodes = anchor ? anchor.childNodes : li.childNodes;\n var keys = Object.keys(childNodes);\n for (var i_1 = 0; i_1 < childNodes.length; i_1++) {\n if (!(childNodes[Number(keys[i_1])]).hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i_1])].textContent;\n }\n }\n var attributes_1 = getAllAttributes(li);\n if (attributes_1.id) {\n json[fields.id] = attributes_1.id;\n delete attributes_1.id;\n }\n else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes_1).length) {\n json[fields.htmlAttributes] = attributes_1;\n }\n if (anchor) {\n attributes_1 = getAllAttributes(anchor);\n if (Object.keys(attributes_1).length) {\n json[fields.urlAttributes] = attributes_1;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n function typeofData(data) {\n var match = { typeof: null, item: null };\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = { typeof: typeof data[i], item: data[i] };\n }\n }\n return match;\n }\n function setAttribute(element, elementAttributes) {\n var attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n function getAllAttributes(element) {\n var attributes = {};\n var attr = element.attributes;\n for (var index = 0; index < attr.length; index++) {\n attributes[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes;\n }\n /**\n * Created UL element from content template.\n *\n * @param {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function renderContentTemplate(createElement, template, dataSource, \n // eslint-disable-next-line\n fields, options, componentInstance) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n var ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });\n var curOpt = extend({}, defaultListBaseOptions, options);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n // eslint-disable-next-line\n var compiledString = compileTemplate(template);\n var liCollection = [];\n var value;\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], curFields);\n var curItem = dataSource[i];\n var isHeader = curItem.isHeader;\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreating(curData);\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], curFields);\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n }\n var li = createElement('li', {\n id: id + '-' + i,\n className: isHeader ? cssClass.group : cssClass.li, attrs: { role: 'presentation' }\n });\n if (isHeader) {\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n li.innerText = curItem;\n }\n else {\n li.innerText = fieldData[curFields.text];\n }\n }\n else {\n var currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;\n if (isHeader) {\n if (componentInstance && componentInstance.getModuleName() != 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n item: li,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreated(curData);\n }\n liCollection.push(li);\n }\n append(liCollection, ulElement);\n return ulElement;\n }\n ListBase.renderContentTemplate = renderContentTemplate;\n /**\n * Created header items from group template.\n *\n * @param {string} template - that need to convert and generate li element.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n *\n * @param {Element[]} headerItems? - Specifies listbase header items.\n */\n // tslint:disable-next-line\n function renderGroupTemplate(groupTemplate, groupDataSource, fields, \n // eslint-disable-next-line\n headerItems, options, componentInstance) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(groupTemplate);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var curOpt = extend({}, defaultListBaseOptions, options);\n var category = curFields.groupBy;\n for (var _i = 0, headerItems_1 = headerItems; _i < headerItems_1.length; _i++) {\n var header = headerItems_1[_i];\n var headerData = {};\n headerData[\"\" + category] = header.textContent;\n header.innerHTML = '';\n if (componentInstance && componentInstance.getModuleName() !== \"listview\") {\n // eslint-disable-next-line\n var compiledElement = compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, header);\n if (compiledElement) {\n append(compiledElement, header);\n }\n }\n else {\n append(compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), header);\n }\n }\n return headerItems;\n }\n ListBase.renderGroupTemplate = renderGroupTemplate;\n function generateId() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\n function processSubChild(createElement, fieldData, fields, ds, options, element, level) {\n // Get SubList\n var subDS = fieldData[fields.child] || [];\n var hasChildren = fieldData[fields.hasChildren];\n //Create Sub child\n if (subDS.length) {\n hasChildren = true;\n element.classList.add(cssClass.hasChild);\n if (options.processSubChild) {\n var subLi = createListFromJson(createElement, subDS, options, ++level);\n element.appendChild(subLi);\n }\n }\n // Create expand and collapse node\n if (!!options.expandCollapse && hasChildren && !options.template) {\n element.firstElementChild.classList.add(cssClass.iconWrapper);\n // eslint-disable-next-line @typescript-eslint/ban-types\n var expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\n }\n function generateSingleLevelLI(createElement, item, fieldData, fields, className, innerElements, grpLI, id, index, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var value = item;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number' && typeof item !== 'boolean') {\n dataSource = item;\n text = (typeof fieldData[fields.text] === 'boolean' || typeof fieldData[fields.text] === 'number') ?\n fieldData[fields.text] : (fieldData[fields.text] || '');\n value = fieldData[fields.value];\n }\n var elementID;\n if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id])\n && fieldData[fields.id] !== '') {\n elementID = id;\n }\n else {\n elementID = id + '-' + index;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n id: elementID, attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled].toString() === 'false') {\n li.classList.add(cssClass.disabled);\n }\n if (grpLI) {\n li.innerText = text;\n }\n else {\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (innerElements.length && !curOpt.itemNavigable) {\n append(innerElements, li);\n }\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable));\n }\n else {\n if (innerElements.length && curOpt.itemNavigable) {\n append(innerElements, li);\n }\n li.appendChild(document.createTextNode(text));\n }\n }\n return li;\n }\n function getModuleClass(moduleName) {\n var moduleClass;\n // eslint-disable-next-line\n return moduleClass = {\n li: \"e-\" + moduleName + \"-item\",\n ul: \"e-\" + moduleName + \"-parent e-ul\",\n group: \"e-\" + moduleName + \"-group-item\",\n icon: \"e-\" + moduleName + \"-icon\",\n text: \"e-\" + moduleName + \"-text\",\n check: \"e-\" + moduleName + \"-check\",\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: \"e-\" + moduleName + \"-url\",\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: \"e-\" + moduleName + \"-img\",\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n };\n }\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = { href: fieldData[fields.url] };\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.urlAttributes) && fieldData[fields.urlAttributes]) {\n merge(attr, fieldData[fields.urlAttributes]);\n attr.href = fieldData[fields.url] ? fieldData[fields.url] :\n fieldData[fields.urlAttributes].href;\n }\n var anchorTag;\n if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url, innerHTML: text });\n }\n else {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n var anchorWrapper = createElement('div', { className: cssClass.anchorWrap });\n if (innerElements && innerElements.length) {\n append(innerElements, anchorWrapper);\n }\n anchorWrapper.appendChild(document.createTextNode(text));\n append([anchorWrapper], anchorTag);\n }\n setAttribute(anchorTag, attr);\n return anchorTag;\n }\n // tslint:disable-next-line\n /* tslint:disable:align */\n function generateLI(createElement, item, fieldData, \n // eslint-disable-next-line\n fields, className, options, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var uID;\n var grpLI;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number') {\n dataSource = item;\n text = fieldData[fields.text] || '';\n // tslint:disable-next-line\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n // eslint-disable-next-line no-prototype-builtins\n grpLI = (item.hasOwnProperty('isHeader') && item.isHeader)\n ? true : false;\n }\n if (options && options.enableHtmlSanitizer) {\n // eslint-disable-next-line no-self-assign\n text = text;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (!isNullOrUndefined(uID) === true) {\n li.setAttribute('data-uid', uID);\n }\n else {\n li.setAttribute('data-uid', generateId());\n }\n if (grpLI && options && options.groupTemplate) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(options.groupTemplate);\n if (componentInstance && componentInstance.getModuleName() !== \"listview\") {\n // eslint-disable-next-line\n var compiledElement = compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), li);\n }\n }\n else if (!grpLI && options && options.template) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(options.template);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n var innerDiv = createElement('div', {\n className: cssClass.textContent,\n attrs: (ariaAttributes.wrapperRole !== '' ? { role: ariaAttributes.wrapperRole } : {})\n });\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable));\n }\n else {\n var element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n if (options && options.enableHtmlSanitizer) {\n element.innerText = SanitizeHtmlHelper.sanitize(text);\n }\n else {\n element.innerHTML = text;\n }\n innerDiv.appendChild(element);\n }\n li.appendChild(innerDiv);\n }\n return li;\n }\n /**\n * Returns UL element based on the given LI element.\n *\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in UL element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateUL(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n cssClass = getModuleClass(curOpt.moduleName);\n var ulElement = createElement('ul', {\n className: cssClass.ul + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.listRole !== '' ? { role: ariaAttributes.listRole } : {})\n });\n append(liElement, ulElement);\n return ulElement;\n }\n ListBase.generateUL = generateUL;\n /**\n * Returns LI element with additional DIV tag based on the given LI element.\n *\n * @param {liElement} liElement - Specifies LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in created DIV element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateIcon(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n // eslint-disable-next-line @typescript-eslint/ban-types\n var expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + curOpt.expandIconClass + ' ' +\n (isNullOrUndefined(className) ? '' : className)\n })], liElement.querySelector('.' + cssClass.textContent));\n return liElement;\n }\n ListBase.generateIcon = generateIcon;\n})(ListBase || (ListBase = {}));\n/**\n * Used to get dataSource item from complex data using fields.\n *\n * @param {Object} dataSource - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n */\nexport function getFieldValues(dataItem, fields) {\n var fieldData = {};\n if (isNullOrUndefined(dataItem) || typeof (dataItem) === 'string' || typeof (dataItem) === 'number'\n || !isNullOrUndefined(dataItem.isHeader)) {\n return dataItem;\n }\n else {\n for (var _i = 0, _a = Object.keys(fields); _i < _a.length; _i++) {\n var field = _a[_i];\n var dataField = fields[\"\" + field];\n var value = !isNullOrUndefined(dataField) &&\n typeof (dataField) === 'string' ? getValue(dataField, dataItem) : undefined;\n if (!isNullOrUndefined(value)) {\n fieldData[\"\" + dataField] = value;\n }\n }\n }\n return fieldData;\n}\nfunction compileTemplate(template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelector(template)) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-hscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_HSCROLLCON = 'e-hscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVRIGHTARROW = 'e-nav-right-arrow';\nvar CLS_NAVLEFTARROW = 'e-nav-left-arrow';\nvar CLS_HSCROLLNAV = 'e-scroll-nav';\nvar CLS_HSCROLLNAVRIGHT = 'e-scroll-right-nav';\nvar CLS_HSCROLLNAVLEFT = 'e-scroll-left-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_RIGHTOVERLAY = 'e-scroll-right-overlay';\nvar CLS_LEFTOVERLAY = 'e-scroll-left-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * HScroll module is introduces horizontal scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs horizontal scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
    \n * \n * ```\n */\nvar HScroll = /** @class */ (function (_super) {\n __extends(HScroll, _super);\n /**\n * Initializes a new instance of the HScroll class.\n *\n * @param {HScrollModel} options - Specifies HScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which horizontal scrolling applies.\n */\n function HScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var element = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (element.id === '') {\n element.id = getUniqueID('hscroll');\n this.uniqueId = true;\n }\n element.style.display = 'block';\n if (this.enableRtl) {\n element.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the horizontal scroll rendering\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlay(this.element);\n }\n this.setScrollState();\n };\n HScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetWidth;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n HScroll.prototype.initialize = function () {\n var scrollEle = this.createElement('div', { className: CLS_HSCROLLCON });\n var scrollDiv = this.createElement('div', { className: CLS_HSCROLLBAR });\n scrollDiv.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollEle.appendChild(ele_1);\n }\n scrollDiv.appendChild(scrollEle);\n ele.appendChild(scrollDiv);\n scrollDiv.style.overflowX = 'hidden';\n this.scrollEle = scrollDiv;\n this.scrollItems = scrollEle;\n };\n HScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n HScroll.prototype.getModuleName = function () {\n return 'hScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n HScroll.prototype.destroy = function () {\n var ele = this.element;\n ele.style.display = '';\n ele.classList.remove(CLS_ROOT);\n ele.classList.remove(CLS_DEVICE);\n ele.classList.remove(CLS_RTL);\n var nav = selectAll('.e-' + ele.id + '_nav.' + CLS_HSCROLLNAV, ele);\n var overlay = selectAll('.' + CLS_OVERLAY, ele);\n [].slice.call(overlay).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n ele.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (nav.length > 0) {\n detach(nav[0]);\n if (!isNullOrUndefined(nav[1])) {\n detach(nav[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the HScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, HScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n HScroll.prototype.disable = function (value) {\n var navEles = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEles).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n HScroll.prototype.createOverlay = function (element) {\n var id = element.id.concat('_nav');\n var rightOverlayEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_RIGHTOVERLAY });\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightEle = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n rightEle.appendChild(navItem);\n var leftEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_LEFTOVERLAY });\n if (this.ieCheck) {\n rightEle.classList.add('e-ie-align');\n }\n element.appendChild(rightOverlayEle);\n element.appendChild(rightEle);\n element.insertBefore(leftEle, element.firstChild);\n this.eventBinding([rightEle]);\n };\n HScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightAttributes = { 'role': 'button', 'id': id.concat('_right'), 'aria-label': 'Scroll right' };\n var nav = this.createElement('div', { className: clsRight, attrs: rightAttributes });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsLeft = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVLEFT);\n var leftAttributes = { 'role': 'button', 'id': id.concat('_left'), 'aria-label': 'Scroll left' };\n var navEle = this.createElement('div', { className: clsLeft + ' ' + CLS_DISABLE, attrs: leftAttributes });\n navEle.setAttribute('aria-disabled', 'true');\n var navLeftItem = this.createElement('div', { className: CLS_NAVLEFTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navEle.appendChild(navLeftItem);\n nav.appendChild(navItem);\n element.appendChild(nav);\n element.insertBefore(navEle, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navEle.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navEle]);\n };\n HScroll.prototype.onKeyPress = function (e) {\n var _this = this;\n if (e.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, e.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n HScroll.prototype.onKeyUp = function (e) {\n if (e.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n e.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n HScroll.prototype.eventBinding = function (ele) {\n var _this = this;\n [].slice.call(ele).forEach(function (el) {\n new Touch(el, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n el.addEventListener('keydown', _this.onKeyPress.bind(_this));\n el.addEventListener('keyup', _this.onKeyUp.bind(_this));\n el.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n el.addEventListener('touchend', _this.repeatScroll.bind(_this));\n el.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(el, 'click', _this.clickEventHandler, _this);\n });\n };\n HScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n HScroll.prototype.tabHoldHandler = function (e) {\n var _this = this;\n var trgt = e.originalEvent.target;\n trgt = this.contains(trgt, CLS_HSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDis = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDis, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n HScroll.prototype.contains = function (ele, className) {\n return ele.classList.contains(className);\n };\n HScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var rootEle = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_HSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (this.contains(rootEle, CLS_RTL) && this.browserCheck) {\n scrollDis = -scrollDis;\n }\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n if (classList.contains(CLS_NAVRIGHTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n else {\n if (classList.contains(CLS_NAVLEFTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n };\n HScroll.prototype.clickEventHandler = function (e) {\n this.eleScrolling(this.scrollStep, e.target, false);\n };\n HScroll.prototype.swipeHandler = function (e) {\n var swipeEle = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceX / (e.velocity * 10);\n }\n else {\n distance = e.distanceX / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Left') {\n swipeEle.scrollLeft += distance * step;\n }\n else if (e.swipeDirection === 'Right') {\n swipeEle.scrollLeft -= distance * step;\n }\n start -= 0.5;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollLeft += scrollVal;\n }\n else {\n this.scrollEle.scrollLeft -= scrollVal;\n }\n if (this.enableRtl && this.scrollEle.scrollLeft > 0) {\n this.scrollEle.scrollLeft = 0;\n }\n };\n HScroll.prototype.frameScrollRequest = function (scrollVal, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollVal, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollVal -= el.offsetWidth;\n });\n }\n var animate = function () {\n var scrollValue;\n var scrollStep;\n if (_this.contains(_this.element, CLS_RTL) && _this.browserCheck) {\n scrollValue = -scrollVal;\n scrollStep = -step;\n }\n else {\n scrollValue = scrollVal;\n scrollStep = step;\n }\n if (scrollValue < step) {\n window.cancelAnimationFrame(scrollStep);\n }\n else {\n _this.scrollUpdating(scrollStep, action);\n scrollVal -= scrollStep;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.touchHandler = function (e) {\n var ele = this.scrollEle;\n var distance = e.distanceX;\n if ((this.ieCheck) && this.contains(this.element, CLS_RTL)) {\n distance = -distance;\n }\n if (e.scrollDirection === 'Left') {\n ele.scrollLeft = ele.scrollLeft + distance;\n }\n else if (e.scrollDirection === 'Right') {\n ele.scrollLeft = ele.scrollLeft - distance;\n }\n };\n HScroll.prototype.arrowDisabling = function (addDisable, removeDisable) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisable) ? removeDisable : addDisable;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisable)) {\n classList(arrowIcon, [CLS_NAVRIGHTARROW], [CLS_NAVLEFTARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVLEFTARROW], [CLS_NAVRIGHTARROW]);\n }\n }\n else if (addDisable && removeDisable) {\n addDisable.classList.add(CLS_DISABLE);\n addDisable.setAttribute('aria-disabled', 'true');\n addDisable.removeAttribute('tabindex');\n removeDisable.classList.remove(CLS_DISABLE);\n removeDisable.setAttribute('aria-disabled', 'false');\n removeDisable.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n HScroll.prototype.scrollHandler = function (e) {\n var target = e.target;\n var width = target.offsetWidth;\n var rootEle = this.element;\n var navLeftEle = this.element.querySelector('.' + CLS_HSCROLLNAVLEFT);\n var navRightEle = this.element.querySelector('.' + CLS_HSCROLLNAVRIGHT);\n var leftOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n var rightOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n var scrollLeft = target.scrollLeft;\n if (scrollLeft <= 0) {\n scrollLeft = -scrollLeft;\n }\n if (this.isDevice) {\n if (this.enableRtl && !(this.browserCheck || this.ieCheck)) {\n leftOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n rightOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n }\n if (scrollLeft < OVERLAY_MAXWID) {\n leftOverlay.style.width = scrollLeft + 'px';\n }\n else {\n leftOverlay.style.width = '40px';\n }\n if ((target.scrollWidth - Math.ceil(width + scrollLeft)) < OVERLAY_MAXWID) {\n rightOverlay.style.width = (target.scrollWidth - Math.ceil(width + scrollLeft)) + 'px';\n }\n else {\n rightOverlay.style.width = '40px';\n }\n }\n if (scrollLeft === 0) {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_HSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {HScrollModel} newProp - It contains the new value of data.\n * @param {HScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n HScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], HScroll.prototype, \"scrollStep\", void 0);\n HScroll = __decorate([\n NotifyPropertyChanges\n ], HScroll);\n return HScroll;\n}(Component));\nexport { HScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID, removeClass } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach, createElement as buildTag } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-vscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVUPARROW = 'e-nav-up-arrow';\nvar CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nvar CLS_VSCROLLNAV = 'e-scroll-nav';\nvar CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nvar CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
    \n * \n * ```\n */\nvar VScroll = /** @class */ (function (_super) {\n __extends(VScroll, _super);\n /**\n * Initializes a new instance of the VScroll class.\n *\n * @param {VScrollModel} options - Specifies VScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which vertical scrolling applies.\n */\n function VScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the vertical scroll rendering\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n };\n VScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n VScroll.prototype.initialize = function () {\n var scrollCnt = buildTag('div', { className: CLS_VSCROLLCON });\n var scrollBar = buildTag('div', { className: CLS_VSCROLLBAR });\n scrollBar.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollCnt.appendChild(ele_1);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.overflow = 'hidden';\n this.scrollEle = scrollBar;\n this.scrollItems = scrollCnt;\n };\n VScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n VScroll.prototype.getModuleName = function () {\n return 'vScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n VScroll.prototype.destroy = function () {\n var el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT, CLS_DEVICE, CLS_RTL]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY, el);\n [].slice.call(overlays).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n VScroll.prototype.disable = function (value) {\n var navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEle).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n VScroll.prototype.createOverlayElement = function (element) {\n var id = element.id.concat('_nav');\n var downOverlayEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_DOWNOVERLAY });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = buildTag('div', { id: id.concat('down'), className: clsDown });\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n downEle.appendChild(navItem);\n var upEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_UPOVERLAY });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n };\n VScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var nav = buildTag('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = buildTag('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = buildTag('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n };\n VScroll.prototype.onKeyPress = function (ev) {\n var _this = this;\n if (ev.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n VScroll.prototype.onKeyUp = function (ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n VScroll.prototype.eventBinding = function (element) {\n var _this = this;\n [].slice.call(element).forEach(function (ele) {\n new Touch(ele, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n ele.addEventListener('keydown', _this.onKeyPress.bind(_this));\n ele.addEventListener('keyup', _this.onKeyUp.bind(_this));\n ele.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n ele.addEventListener('touchend', _this.repeatScroll.bind(_this));\n ele.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', _this.clickEventHandler, _this);\n });\n };\n VScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n VScroll.prototype.tabHoldHandler = function (ev) {\n var _this = this;\n var trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDistance = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n VScroll.prototype.contains = function (element, className) {\n return element.classList.contains(className);\n };\n VScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var classList = trgt.classList;\n if (classList.contains(CLS_VSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (classList.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else if (classList.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n };\n VScroll.prototype.clickEventHandler = function (event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n };\n VScroll.prototype.wheelEventHandler = function (e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, (e.deltaY > 0 ? 'add' : ''), false);\n };\n VScroll.prototype.swipeHandler = function (e) {\n var swipeElement = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n }\n else {\n distance = e.distanceY / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n }\n else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n }\n else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n };\n VScroll.prototype.frameScrollRequest = function (scrollValue, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollValue -= el.offsetHeight;\n });\n }\n var animate = function () {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n }\n else {\n _this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.touchHandler = function (e) {\n var el = this.scrollEle;\n var distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n }\n else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n };\n VScroll.prototype.arrowDisabling = function (addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n }\n else {\n addDisableCls.classList.add(CLS_DISABLE);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n VScroll.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n var height = target.offsetHeight;\n var navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n var navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n var upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n var downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n var scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID) {\n upOverlay.style.height = scrollTop + 'px';\n }\n else {\n upOverlay.style.height = '40px';\n }\n if ((target.scrollHeight - Math.ceil(height + scrollTop)) < OVERLAY_MAXWID) {\n downOverlay.style.height = (target.scrollHeight - Math.ceil(height + scrollTop)) + 'px';\n }\n else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n }\n else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {VScrollModel} newProp - It contains the new value of data.\n * @param {VScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n VScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(CLS_RTL);\n }\n else {\n this.element.classList.remove(CLS_RTL);\n }\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate([\n NotifyPropertyChanges\n ], VScroll);\n return VScroll;\n}(Component));\nexport { VScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, EventHandler, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isVisible, closest, attributes, detach, classList, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { selectAll, setStyleAttribute as setStyle, select } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, getUniqueID, formatUnit, Collection, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Browser, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], Item.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate([\n Event()\n ], Item.prototype, \"click\", void 0);\n __decorate([\n Property(-1)\n ], Item.prototype, \"tabIndex\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n *
    \n * \n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n *\n * @param {ToolbarModel} options - Specifies Toolbar model properties as options.\n * @param { string | HTMLElement} element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n _this.orientationChangeContext = _this.orientationChange.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n var btnItems = this.element.querySelectorAll('.e-control.e-btn');\n [].slice.call(btnItems).forEach(function (el) {\n if (!isNOU(el) && !isNOU(el.ej2_instances) && !isNOU(el.ej2_instances[0]) && !(el.ej2_instances[0].isDestroyed)) {\n el.ej2_instances[0].destroy();\n }\n });\n this.unwireEvents();\n this.tempId.forEach(function (ele) {\n if (!isNOU(_this.element.querySelector(ele))) {\n document.body.appendChild(_this.element.querySelector(ele)).style.display = 'none';\n }\n });\n this.destroyItems();\n while (this.element.lastElementChild) {\n this.element.removeChild(this.element.lastElementChild);\n }\n if (this.trgtEle) {\n this.element.appendChild(this.ctrlTem);\n this.trgtEle = null;\n this.ctrlTem = null;\n }\n if (this.popObj) {\n this.popObj.destroy();\n detach(this.popObj.element);\n }\n if (this.activeEle) {\n this.activeEle = null;\n }\n this.popObj = null;\n this.tbarAlign = null;\n this.tbarItemsCol = [];\n this.remove(this.element, 'e-toolpop');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(' '));\n }\n this.element.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'role'].forEach(function (attrb) {\n return _this.element.removeAttribute(attrb);\n });\n _super.prototype.destroy.call(this);\n };\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n window.addEventListener('orientationchange', this.orientationChangeContext);\n if (this.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n };\n Toolbar.prototype.wireKeyboardEvent = function () {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.updateTabIndex('0');\n };\n Toolbar.prototype.updateTabIndex = function (tabIndex) {\n var ele = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(ele) && !isNOU(ele.firstElementChild)) {\n var dataTabIndex = ele.firstElementChild.getAttribute('data-tabindex');\n if (dataTabIndex && dataTabIndex === '-1' && ele.firstElementChild.tagName !== 'INPUT') {\n ele.firstElementChild.setAttribute('tabindex', tabIndex);\n }\n }\n };\n Toolbar.prototype.unwireKeyboardEvent = function () {\n if (this.keyModule) {\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n this.keyModule.destroy();\n this.keyModule = null;\n }\n };\n Toolbar.prototype.docKeyDown = function (e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n var popCheck = !isNOU(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n var keyCheck = (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36);\n if (keyCheck) {\n e.preventDefault();\n }\n };\n Toolbar.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.unwireKeyboardEvent();\n window.removeEventListener('resize', this.resizeContext);\n window.removeEventListener('orientationchange', this.orientationChangeContext);\n EventHandler.remove(document, 'scroll', this.docEvent);\n EventHandler.remove(document, 'click', this.docEvent);\n };\n Toolbar.prototype.clearProperty = function () {\n this.tbarEle = [];\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n };\n Toolbar.prototype.docEvent = function (e) {\n var popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n };\n Toolbar.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Toolbar.prototype.destroyItems = function () {\n if (this.element) {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) { detach(el); });\n }\n if (this.tbarAlign) {\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n [].slice.call(tbarItems.children).forEach(function (el) {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n };\n Toolbar.prototype.destroyMode = function () {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n var tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n };\n Toolbar.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Toolbar.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n Toolbar.prototype.elementFocus = function (ele) {\n var fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n }\n else {\n ele.focus();\n }\n };\n Toolbar.prototype.clstElement = function (tbrNavChk, trgt) {\n var clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n }\n else if (this.element === trgt || tbrNavChk) {\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = { name: 'FadeOut', duration: 100 };\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n var ele;\n var nodes;\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n var extendedPopup = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && extendedPopup && extendedPopup.classList.contains('e-popup-open')) {\n popupCheck = e.action === 'end' ? extendedPopup : null;\n }\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')');\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n var popEle = popObj.element;\n var popFrstEle = popEle.firstElementChild;\n if ((value === 'previous' && popFrstEle === clst)) {\n popEle.lastElementChild.firstChild.focus();\n }\n else if (value === 'next' && popEle.lastElementChild === clst) {\n popFrstEle.firstChild.focus();\n }\n else {\n this.eleFocus(clst, value);\n }\n }\n else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n }\n else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n }\n else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n var ele_1 = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n }\n else {\n this.activeEleRemove(ele_1);\n ele_1.focus();\n }\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n else {\n popObj.hide(popAnimate);\n }\n break;\n }\n };\n Toolbar.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n e.preventDefault();\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n var clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n if (value) {\n rootEle.classList.add(CLS_DISABLE);\n }\n else {\n rootEle.classList.remove(CLS_DISABLE);\n }\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', this.activeEle.getAttribute('data-tabindex'));\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n };\n Toolbar.prototype.eleContains = function (el) {\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el) || !el.classList.contains(CLS_ITEM);\n };\n Toolbar.prototype.focusFirstVisibleEle = function (nodes) {\n var element;\n var index = 0;\n while (index < nodes.length) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index++;\n }\n return element;\n };\n Toolbar.prototype.focusLastVisibleEle = function (nodes) {\n var element;\n var index = nodes.length - 1;\n while (index >= 0) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index--;\n }\n return element;\n };\n Toolbar.prototype.eleFocus = function (closest, pos) {\n var sib = Object(closest)[pos + 'ElementSibling'];\n if (sib) {\n var skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n }\n else if (this.tbarAlign) {\n var elem = Object(closest.parentElement)[pos + 'ElementSibling'];\n if (!isNOU(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNOU(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n var el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n }\n else {\n var el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n this.elementFocus(el);\n }\n }\n }\n }\n else if (!isNOU(closest)) {\n var tbrItems = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')' + ':not(.' + CLS_DISABLE + ')' + ':not(.' + CLS_HIDDEN + ')');\n if (pos === 'next' && tbrItems) {\n this.elementFocus(tbrItems[0]);\n }\n else if (pos === 'previous' && tbrItems) {\n this.elementFocus(tbrItems[tbrItems.length - 1]);\n }\n }\n };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\n var clsList = trgt.classList;\n var popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNOU(clst) || clst.classList.contains(CLS_DISABLE)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n var tempItem = this.items[this.tbarEle.indexOf(clst)];\n itemObj = tempItem;\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n if (itemObj && !isNOU(itemObj.click)) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNOU(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup' &&\n clickedArgs.item && clickedArgs.item.type !== 'Input') {\n _this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n };\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n }\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.render = function () {\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyle(this.element, { 'height': height });\n }\n setStyle(this.element, { 'width': width });\n var ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical'\n };\n attributes(this.element, ariaAttr);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Toolbar.prototype.renderControl = function () {\n var ele = this.element;\n this.trgtEle = (ele.children.length > 0) ? ele.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderLayout();\n };\n Toolbar.prototype.renderLayout = function () {\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n this.separator();\n };\n Toolbar.prototype.itemsAlign = function (items, itemEleDom) {\n var innerItem;\n var innerPos;\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[parseInt(i.toString(), 10)], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[parseInt(i.toString(), 10)], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[parseInt(i.toString(), 10)].align.toLowerCase());\n if (innerPos) {\n if (!(items[parseInt(i.toString(), 10)].showAlwaysInPopup && items[parseInt(i.toString(), 10)].overflow !== 'Show')) {\n this.tbarAlgEle[(items[parseInt(i.toString(), 10)].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n if (this.isReact) {\n var portals = 'portals';\n this.notify('render-react-toolbar-template', this[\"\" + portals]);\n this.renderReactTemplates();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n if (this.cssClass) {\n addClass([innerItems[0]], this.cssClass.split(' '));\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n *\n * @returns {void}.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n var ariaAttr = {\n 'tabindex': '0', 'role': 'button', 'aria-haspopup': 'true',\n 'aria-label': 'overflow'\n };\n attributes(this.element.querySelector('.' + CLS_TBARNAV), ariaAttr);\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n var eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[parseInt(i.toString(), 10)].offsetLeft < 30 && eleItem[parseInt(i.toString(), 10)].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n var eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyle(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[parseInt(index.toString(), 10)]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyle(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyle(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[parseInt(i.toString(), 10)];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyle(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR);\n sepHeight =\n (element.style.height === 'auto' || element.style.height === '') ? null : (sepItem && sepItem.offsetHeight);\n }\n var eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n var eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element)) {\n ele = select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element);\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n if (this.cssClass) {\n addClass([ele], this.cssClass.split(' '));\n }\n setStyle(this.element, { overflow: '' });\n var eleStyles = window.getComputedStyle(this.element);\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n if (this.overflowMode === 'Extended') {\n popup.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n popup.offsetX = 0;\n }\n popup.appendTo(ele);\n EventHandler.add(document, 'scroll', this.docEvent.bind(this));\n EventHandler.add(document, 'click ', this.docEvent.bind(this));\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n }\n else {\n var popupEle = this.popObj.element;\n setStyle(popupEle, { maxHeight: '', display: 'block' });\n setStyle(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n if (isOpen) {\n this.add(this.element, CLS_EXTENDEDPOPOPEN);\n }\n else {\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'true');\n setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNOU(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n var overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[parseInt(i.toString(), 10)];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n else if (this.isVertical) {\n var tbEleData = this.element.getBoundingClientRect();\n setStyle(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n if (popObj) {\n var popupOffset = popupEle.getBoundingClientRect();\n if (popupOffset.right > document.documentElement.clientWidth && popupOffset.width > toolEle.getBoundingClientRect().width) {\n popObj.collision = { Y: 'none' };\n popObj.dataBind();\n }\n popObj.refreshPosition();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'false');\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[parseInt(i.toString(), 10)]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n var fstEleCheck = inEle[parseInt(i.toString(), 10)] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight : inEle[parseInt(i.toString(), 10)].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[parseInt(i.toString(), 10)], [CLS_POPPRI]) && popPriority) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetTop + inEle[parseInt(i.toString(), 10)].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetLeft + inEle[parseInt(i.toString(), 10)].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n var sepEle = inEle[parseInt(i.toString(), 10)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyle(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[parseInt(i.toString(), 10)], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'button');\n element.appendChild(nav);\n };\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig, eleStyles) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = (!isNOU(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNOU(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n eleSep.style.display = 'unset';\n var eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n var prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNOU(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n setStyle(el, eleStyles);\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = 'none';\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNOU(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNOU(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNOU(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n var inlineStyles = { minWidth: el.style.minWidth, height: el.style.height, minHeight: el.style.minHeight };\n setStyle(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[parseInt(index.toString(), 10)].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount, inlineStyles);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\")\n break;\n }\n var checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[2].style.top = popWid;\n }\n else {\n innerItem[2].style.bottom = popWid;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[2].style.left = popWid;\n }\n else {\n innerItem[2].style.right = popWid;\n }\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[1].style.marginBottom = mrgn;\n }\n else {\n innerItem[1].style.marginTop = mrgn;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[1].style.marginRight = mrgn;\n }\n else {\n innerItem[1].style.marginLeft = mrgn;\n }\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var items = this.items;\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n var itemEleDom = void 0;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n this.itemsAlign(items, itemEleDom);\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[parseInt(i.toString(), 10)];\n if (keyVal === 'class') {\n this.add(element, attr[\"\" + keyVal]);\n }\n else {\n element.setAttribute(keyVal, attr[\"\" + keyVal]);\n }\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n *\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns {void}.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNOU(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n }\n else {\n ele.classList.add(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'true');\n }\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[parseInt(a.toString(), 10)];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n }\n else {\n elements[parseInt(a.toString(), 10)] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n if (isEnable) {\n removeClass(elements, CLS_DISABLE);\n }\n else {\n addClass(elements, CLS_DISABLE);\n }\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNOU(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[parseInt(index.toString(), 10)]) {\n return this.tbarEle[parseInt(index.toString(), 10)];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n *\n * @param {ItemModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns {void}.\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.insertBefore(innerEle, ele.children[parseInt(index.toString(), 10)]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[parseInt(index.toString(), 10)]);\n }\n this.items.splice(index, 0, item);\n if (item.template) {\n this.tbarEle.splice(this.tbarEle.length - 1, 1);\n }\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n *\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns {void}.\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[parseInt(index.toString(), 10)] && innerItems[parseInt(index.toString(), 10)]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[parseInt(index.toString(), 10)]);\n if (this.tbarAlign) {\n var indexAgn = this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].indexOf(this.tbarEle[parseInt(eleIdx.toString(), 10)]);\n this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].splice(parseInt(indexAgn.toString(), 10), 1);\n }\n if (this.isReact) {\n this.clearToolbarTemplate(innerItems[parseInt(index.toString(), 10)]);\n }\n var btnItem = innerItems[parseInt(index.toString(), 10)].querySelector('.e-control.e-btn');\n if (!isNOU(btnItem) && !isNOU(btnItem.ej2_instances[0]) && !(btnItem.ej2_instances[0].isDestroyed)) {\n btnItem.ej2_instances[0].destroy();\n }\n detach(innerItems[parseInt(index.toString(), 10)]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n var regEx = new RegExp(/<(?=.*? .*?\\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\\/\\1>/i);\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n try {\n if (typeof (templateProp) === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (typeof (templateProp) === 'string' && regEx.test(val)) {\n innerEle.innerHTML = val;\n }\n else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNOU(tempStr)) {\n this.tempId.push(val);\n }\n }\n else {\n templateFn = templateCompiler(val);\n }\n }\n catch (e) {\n templateFn = templateCompiler(val);\n }\n var tempArray = void 0;\n if (!isNOU(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate);\n }\n if (!isNOU(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNOU(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n var ele = this.createElement('input');\n if (item.id) {\n ele.id = item.id;\n }\n else {\n ele.id = getUniqueID('tbr-ipt');\n }\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n if (item.id) {\n dom.id = item.id;\n }\n else {\n dom.id = getUniqueID('e-tbr-btn');\n }\n var btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(textStr) : textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyle(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var dom;\n var innerEle = this.createElement('div', { className: CLS_ITEM });\n var tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(item.tooltipText) : item.tooltipText\n });\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('data-tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\n dom.setAttribute('aria-disabled', 'false');\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n if (item.disabled) {\n this.add(innerEle, CLS_DISABLE);\n }\n if (item.visible === false) {\n this.add(innerEle, CLS_HIDDEN);\n }\n return innerEle;\n };\n Toolbar.prototype.getDataTabindex = function (ele) {\n return isNOU(ele.getAttribute('data-tabindex')) ? '-1' : ele.getAttribute('data-tabindex');\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n }\n this.activeEle = curEle;\n if (this.getDataTabindex(this.activeEle) === '-1') {\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n this.updateTabIndex('-1');\n curEle.removeAttribute('tabindex');\n }\n else {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n }\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - Returns the module name as string.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n var eleStyles = window.getComputedStyle(this.element);\n this.popObj.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.orientationChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.resize();\n }, 500);\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n Toolbar.prototype.updateHideEleTabIndex = function (ele, isHidden, isElement, eleIndex, innerItems) {\n if (isElement) {\n eleIndex = innerItems.indexOf(ele);\n }\n var nextEle = innerItems[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n var dataTabIndex = nextEle.firstElementChild.getAttribute('data-tabindex');\n if (isHidden && dataTabIndex === '-1') {\n nextEle.firstElementChild.setAttribute('tabindex', '0');\n }\n else if (dataTabIndex !== nextEle.firstElementChild.getAttribute('tabindex')) {\n nextEle.firstElementChild.setAttribute('tabindex', dataTabIndex);\n }\n break;\n }\n nextEle = innerItems[++eleIndex];\n }\n };\n Toolbar.prototype.clearToolbarTemplate = function (templateEle) {\n if (this.registeredTemplate && this.registeredTemplate[\"\" + 'template']) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[\"\" + 'template'].length; index++) {\n var registeredItem = registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], [registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[parseInt(index.toString(), 10)];\n var closestItem = closest(portalItem.containerInfo, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], index);\n break;\n }\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {ToolbarModel} newProp - It contains new value of the data.\n * @param {ToolbarModel} oldProp - It contains old value of the data.\n * @returns {void}\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n var wid = tEle.offsetWidth;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(i.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)])[0];\n var newProperty = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property];\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[parseInt(index.toString(), 10)].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n if (this.isReact && this.items[parseInt(index.toString(), 10)].template) {\n this.clearToolbarTemplate(itemCol[parseInt(index.toString(), 10)]);\n }\n detach(itemCol[parseInt(index.toString(), 10)]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[parseInt(index.toString(), 10)]], index);\n this.items.splice(index, 1);\n if (this.items[parseInt(index.toString(), 10)].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.refreshOverflow();\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n else {\n this.remove(tEle, CLS_RTL);\n }\n if (!isNOU(this.scrollModule)) {\n if (newProp.enableRtl) {\n this.add(this.scrollModule.element, CLS_RTL);\n }\n else {\n this.remove(this.scrollModule.element, CLS_RTL);\n }\n }\n if (!isNOU(this.popObj)) {\n if (newProp.enableRtl) {\n this.add(this.popObj.element, CLS_RTL);\n }\n else {\n this.remove(this.popObj.element, CLS_RTL);\n }\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'allowKeyboard':\n this.unwireKeyboardEvent();\n if (newProp.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n *\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns {void}.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = (typeof (index) === 'object') ? true : false;\n var eleIndex = index;\n var ele;\n if (!isElement && isNOU(eleIndex)) {\n return;\n }\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[parseInt(eleIndex.toString(), 10)]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[parseInt(eleIndex.toString(), 10)];\n }\n if (ele) {\n if (value) {\n ele.classList.add(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex')) ||\n ele.firstElementChild.getAttribute('tabindex') !== '-1') {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n }\n else {\n ele.classList.remove(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Toolbar.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\nexport { Toolbar };\n","/**\n * Collision module.\n */\nimport { calculatePosition } from './position';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar parentDocument;\nvar targetContainer;\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision coordinates\n * @param {OffsetPosition} position - specifies the position\n * @returns {void}\n */\nexport function fit(element, viewPortElement, axis, position) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: false, Y: false }; }\n if (!axis.Y && !axis.X) {\n return { left: 0, top: 0 };\n }\n var elemData = element.getBoundingClientRect();\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n if (!position) {\n position = calculatePosition(element, 'left', 'top');\n }\n var zoomingFactor = 1;\n var parentWithZoomStyle = element.closest('[style*=\"zoom\"]');\n if (parentWithZoomStyle) {\n zoomingFactor = parseFloat(getComputedStyle(parentWithZoomStyle).zoom);\n }\n if (axis.X) {\n var containerWidth = targetContainer ? getTargetContainerWidth() : getViewPortWidth();\n var containerLeft = ContainerLeft() / zoomingFactor;\n var containerRight = ContainerRight() / zoomingFactor;\n var overLeft = containerLeft - position.left;\n var overRight = position.left + elemData.width - containerRight;\n if (elemData.width > containerWidth) {\n if (overLeft > 0 && overRight <= 0) {\n position.left = containerRight - elemData.width;\n }\n else if (overRight > 0 && overLeft <= 0) {\n position.left = containerLeft;\n }\n else {\n position.left = overLeft > overRight ? (containerRight - elemData.width) : containerLeft;\n }\n }\n else if (overLeft > 0) {\n position.left += overLeft;\n }\n else if (overRight > 0) {\n position.left -= overRight;\n }\n }\n if (axis.Y) {\n var containerHeight = targetContainer ? getTargetContainerHeight() : getViewPortHeight();\n var containerTop = ContainerTop() / zoomingFactor;\n var containerBottom = ContainerBottom() / zoomingFactor;\n var overTop = containerTop - position.top;\n var overBottom = position.top + elemData.height - containerBottom;\n if (elemData.height > containerHeight) {\n if (overTop > 0 && overBottom <= 0) {\n position.top = containerBottom - elemData.height;\n }\n else if (overBottom > 0 && overTop <= 0) {\n position.top = containerTop;\n }\n else {\n position.top = overTop > overBottom ? (containerBottom - elemData.height) : containerTop;\n }\n }\n else if (overTop > 0) {\n position.top += overTop;\n }\n else if (overBottom > 0) {\n position.top -= overBottom;\n }\n }\n return position;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the html element\n * @param {HTMLElement} viewPortElement - specifies the html element\n * @param {number} x - specifies the number\n * @param {number} y - specifies the number\n * @returns {string[]} - returns the string value\n */\nexport function isCollide(element, viewPortElement, x, y) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n var elemOffset = calculatePosition(element, 'left', 'top');\n if (x) {\n elemOffset.left = x;\n }\n if (y) {\n elemOffset.top = y;\n }\n var data = [];\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n var elementRect = element.getBoundingClientRect();\n var top = elemOffset.top;\n var left = elemOffset.left;\n var right = elemOffset.left + elementRect.width;\n var bottom = elemOffset.top + elementRect.height;\n // eslint-disable-next-line\n var topData = '', leftData = '';\n var yAxis = topCollideCheck(top, bottom);\n var xAxis = leftCollideCheck(left, right);\n if (yAxis.topSide) {\n data.push('top');\n }\n if (xAxis.rightSide) {\n data.push('right');\n }\n if (xAxis.leftSide) {\n data.push('left');\n }\n if (yAxis.bottomSide) {\n data.push('bottom');\n }\n return data;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} target - specifies the element\n * @param {number} offsetX - specifies the number\n * @param {number} offsetY - specifies the number\n * @param {string} positionX - specifies the string value\n * @param {string} positionY - specifies the string value\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision axis\n * @param {boolean} fixedParent - specifies the boolean\n * @returns {void}\n */\nexport function flip(element, target, offsetX, offsetY, positionX, positionY, viewPortElement, \n/* eslint-disable */\naxis, fixedParent) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: true, Y: true }; }\n if (!target || !element || !positionX || !positionY || (!axis.X && !axis.Y)) {\n return;\n }\n var tEdge = { TL: null,\n TR: null,\n BL: null,\n BR: null\n }, eEdge = {\n TL: null,\n TR: null,\n BL: null,\n BR: null\n /* eslint-enable */\n };\n var elementRect;\n if (window.getComputedStyle(element).display === 'none') {\n var oldVisibility = element.style.visibility;\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n elementRect = element.getBoundingClientRect();\n element.style.removeProperty('display');\n element.style.visibility = oldVisibility;\n }\n else {\n elementRect = element.getBoundingClientRect();\n }\n var pos = {\n posX: positionX, posY: positionY, offsetX: offsetX, offsetY: offsetY, position: { left: 0, top: 0 }\n };\n targetContainer = viewPortElement;\n parentDocument = target.ownerDocument;\n updateElementData(target, tEdge, pos, fixedParent, elementRect);\n setPosition(eEdge, pos, elementRect);\n if (axis.X) {\n leftFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n if (axis.Y && tEdge.TL.top > -1) {\n topFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n setPopup(element, pos, elementRect);\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction setPopup(element, pos, elementRect) {\n //eslint-disable-next-line\n var left = 0, top = 0;\n if (element.offsetParent != null\n && (getComputedStyle(element.offsetParent).position === 'absolute' ||\n getComputedStyle(element.offsetParent).position === 'relative')) {\n var data = calculatePosition(element.offsetParent, 'left', 'top', false, elementRect);\n left = data.left;\n top = data.top;\n }\n var scaleX = 1;\n var scaleY = 1;\n if (element.offsetParent) {\n var transformStyle = getComputedStyle(element.offsetParent).transform;\n if (transformStyle !== 'none') {\n var matrix = new DOMMatrix(transformStyle);\n scaleX = matrix.a;\n scaleY = matrix.d;\n }\n }\n element.style.top = ((pos.position.top / scaleY) + pos.offsetY - (top)) + 'px';\n element.style.left = ((pos.position.left / scaleX) + pos.offsetX - (left)) + 'px';\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {PositionLocation} pos - specifies theloaction\n * @param {boolean} fixedParent - specifies the boolean\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction updateElementData(target, edge, pos, fixedParent, elementRect) {\n pos.position = calculatePosition(target, pos.posX, pos.posY, fixedParent, elementRect);\n edge.TL = calculatePosition(target, 'left', 'top', fixedParent, elementRect);\n edge.TR = calculatePosition(target, 'right', 'top', fixedParent, elementRect);\n edge.BR = calculatePosition(target, 'left', 'bottom', fixedParent, elementRect);\n edge.BL = calculatePosition(target, 'right', 'bottom', fixedParent, elementRect);\n}\n/**\n *\n * @param {EdgeOffset} eStatus - specifies the status\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client\n * @returns {void}\n */\nfunction setPosition(eStatus, pos, elementRect) {\n eStatus.TL = { top: pos.position.top + pos.offsetY, left: pos.position.left + pos.offsetX };\n eStatus.TR = { top: eStatus.TL.top, left: eStatus.TL.left + elementRect.width };\n eStatus.BL = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left };\n eStatus.BR = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left + elementRect.width };\n}\n/**\n *\n * @param {number} left - specifies the number\n * @param {number} right - specifies the number\n * @returns {LeftCorners} - returns the value\n */\nfunction leftCollideCheck(left, right) {\n //eslint-disable-next-line\n var leftSide = false, rightSide = false;\n if (((left - getBodyScrollLeft()) < ContainerLeft())) {\n leftSide = true;\n }\n if (right > ContainerRight()) {\n rightSide = true;\n }\n return { leftSide: leftSide, rightSide: rightSide };\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifes the element\n * @param {EdgeOffset} tEdge - specifies the edge offset\n * @param {PositionLocation} pos - specifes the location\n * @param {ClientRect} elementRect - specifies the client\n * @param {boolean} deepCheck - specifies the boolean value\n * @returns {void}\n */\nfunction leftFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = leftCollideCheck(edge.TL.left, edge.TR.left);\n if ((tEdge.TL.left - getBodyScrollLeft()) <= ContainerLeft()) {\n collideSide.leftSide = false;\n }\n if (tEdge.TR.left > ContainerRight()) {\n collideSide.rightSide = false;\n }\n if ((collideSide.leftSide && !collideSide.rightSide) || (!collideSide.leftSide && collideSide.rightSide)) {\n if (pos.posX === 'right') {\n pos.posX = 'left';\n }\n else {\n pos.posX = 'right';\n }\n pos.offsetX = pos.offsetX + elementRect.width;\n pos.offsetX = -1 * pos.offsetX;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n leftFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {EdgeOffset} tEdge - specifies the offset\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @param {boolean} deepCheck - specifies the boolean\n * @returns {void}\n */\nfunction topFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = topCollideCheck(edge.TL.top, edge.BL.top);\n if ((tEdge.TL.top - getBodyScrollTop()) <= ContainerTop()) {\n collideSide.topSide = false;\n }\n if (tEdge.BL.top >= ContainerBottom() && target.getBoundingClientRect().bottom < window.innerHeight) {\n collideSide.bottomSide = false;\n }\n if ((collideSide.topSide && !collideSide.bottomSide) || (!collideSide.topSide && collideSide.bottomSide)) {\n if (pos.posY === 'top') {\n pos.posY = 'bottom';\n }\n else {\n pos.posY = 'top';\n }\n pos.offsetY = pos.offsetY + elementRect.height;\n pos.offsetY = -1 * pos.offsetY;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false, elementRect);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n topFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {number} top - specifies the number\n * @param {number} bottom - specifies the number\n * @returns {TopCorners} - retyrns the value\n */\nfunction topCollideCheck(top, bottom) {\n //eslint-disable-next-line\n var topSide = false, bottomSide = false;\n if ((top - getBodyScrollTop()) < ContainerTop()) {\n topSide = true;\n }\n if (bottom > ContainerBottom()) {\n bottomSide = true;\n }\n return { topSide: topSide, bottomSide: bottomSide };\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerWidth() {\n return targetContainer.getBoundingClientRect().width;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerHeight() {\n return targetContainer.getBoundingClientRect().height;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerLeft() {\n return targetContainer.getBoundingClientRect().left;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerTop() {\n return targetContainer.getBoundingClientRect().top;\n}\n//eslint-disable-next-line\nfunction ContainerTop() {\n if (targetContainer) {\n return getTargetContainerTop();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerLeft() {\n if (targetContainer) {\n return getTargetContainerLeft();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerRight() {\n if (targetContainer) {\n return (getBodyScrollLeft() + getTargetContainerLeft() + getTargetContainerWidth());\n }\n return (getBodyScrollLeft() + getViewPortWidth());\n}\n//eslint-disable-next-line\nfunction ContainerBottom() {\n if (targetContainer) {\n return (getBodyScrollTop() + getTargetContainerTop() + getTargetContainerHeight());\n }\n return (getBodyScrollTop() + getViewPortHeight());\n}\n/**\n * @returns {void}\n */\nfunction getBodyScrollTop() {\n // if(targetContainer)\n // return targetContainer.scrollTop;\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {void}\n */\nfunction getBodyScrollLeft() {\n // if(targetContainer)\n // return targetContainer.scrollLeft;\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {void}\n */\nfunction getViewPortHeight() {\n return window.innerHeight;\n}\n/**\n * @returns {void}\n */\nfunction getViewPortWidth() {\n var windowWidth = window.innerWidth;\n var documentReact = document.documentElement.getBoundingClientRect();\n var offsetWidth = (isNullOrUndefined(document.documentElement)) ? 0 : documentReact.width;\n return windowWidth - (windowWidth - offsetWidth);\n}\n","/**\n * Position library\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar elementRect;\nvar popupRect;\nvar element;\nvar parentDocument;\nvar fixedParent = false;\n/**\n *\n * @param {HTMLElement} anchor - specifies the element\n * @param {HTMLElement} element - specifies the element\n * @returns {OffsetPosition} - returns the value\n */\nexport function calculateRelativeBasedPosition(anchor, element) {\n var fixedElement = false;\n var anchorPos = { left: 0, top: 0 };\n var tempAnchor = anchor;\n if (!anchor || !element) {\n return anchorPos;\n }\n if (isNullOrUndefined(element.offsetParent) && element.style.position === 'fixed') {\n fixedElement = true;\n }\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left += anchor.offsetLeft;\n anchorPos.top += anchor.offsetTop;\n anchor = anchor.offsetParent;\n }\n anchor = tempAnchor;\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left -= anchor.scrollLeft;\n anchorPos.top -= anchor.scrollTop;\n anchor = anchor.parentElement;\n }\n return anchorPos;\n}\n/**\n *\n * @param {Element} currentElement - specifies the element\n * @param {string} positionX - specifies the position\n * @param {string} positionY - specifies the position\n * @param {boolean} parentElement - specifies the boolean\n * @param {ClientRect} targetValues - specifies the client\n * @returns {OffsetPosition} - returns the position\n */\nexport function calculatePosition(currentElement, positionX, positionY, parentElement, targetValues) {\n popupRect = undefined;\n popupRect = targetValues;\n fixedParent = parentElement ? true : false;\n if (!currentElement) {\n return { left: 0, top: 0 };\n }\n if (!positionX) {\n positionX = 'left';\n }\n if (!positionY) {\n positionY = 'top';\n }\n parentDocument = currentElement.ownerDocument;\n element = currentElement;\n var pos = { left: 0, top: 0 };\n return updatePosition(positionX.toLowerCase(), positionY.toLowerCase(), pos);\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosx(value, pos) {\n pos.left = value;\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosy(value, pos) {\n pos.top = value;\n}\n/**\n *\n * @param {string} posX - specifies the position\n * @param {string} posY - specifies the position\n * @param {OffsetPosition} pos - specifies the position\n * @returns {OffsetPosition} - returns the postion\n */\nfunction updatePosition(posX, posY, pos) {\n elementRect = element.getBoundingClientRect();\n switch (posY + posX) {\n case 'topcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'topright':\n setPosx(getElementRight(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'centercenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerright':\n setPosx(getElementRight(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'bottomcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomright':\n setPosx(getElementRight(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementBottom(), pos);\n break;\n default:\n case 'topleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementTop(), pos);\n break;\n }\n element = null;\n return pos;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollTop() {\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollLeft() {\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementBottom() {\n return fixedParent ? elementRect.bottom : elementRect.bottom + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementVCenter() {\n return getElementTop() + (elementRect.height / 2);\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementTop() {\n return fixedParent ? elementRect.top : elementRect.top + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementLeft() {\n return elementRect.left + getBodyScrollLeft();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementRight() {\n var popupWidth = (element && (element.classList.contains('e-date-wrapper') || element.classList.contains('e-datetime-wrapper') || element.classList.contains('e-date-range-wrapper') || element.classList.contains('e-ddl') || element.classList.contains('e-multiselect'))) ? (popupRect ? popupRect.width : 0) :\n (popupRect && (elementRect.width >= popupRect.width) ? popupRect.width : 0);\n return elementRect.right + getBodyScrollLeft() - popupWidth;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\n}\n","/**\n * Resize library\n */\nimport { isNullOrUndefined as isNOU, createElement, EventHandler, detach, Browser } from '@syncfusion/ej2-base';\n/* eslint-disable */\nvar elementClass = ['north-west', 'north', 'north-east', 'west', 'east', 'south-west', 'south', 'south-east'];\nvar RESIZE_HANDLER = 'e-resize-handle';\nvar FOCUSED_HANDLER = 'e-focused-handle';\nvar DIALOG_RESIZABLE = 'e-dlg-resizable';\nvar RESTRICT_LEFT = ['e-restrict-left'];\nvar RESIZE_WITHIN_VIEWPORT = 'e-resize-viewport';\nvar dialogBorderResize = ['north', 'west', 'east', 'south'];\nvar targetElement;\nvar selectedHandler;\nvar originalWidth = 0;\nvar originalHeight = 0;\nvar originalX = 0;\nvar originalY = 0;\nvar originalMouseX = 0;\nvar originalMouseY = 0;\nvar minHeight;\nvar maxHeight;\nvar minWidth;\nvar maxWidth;\nvar containerElement;\nvar resizeStart = null;\nvar resize = null;\nvar resizeEnd = null;\n/* eslint-enable */\nvar resizeWestWidth;\nvar setLeft = true;\nvar previousWidth = 0;\nvar setWidth = true;\n// eslint-disable-next-line\nvar proxy;\n/**\n *\n * @param {ResizeArgs} args - specifies the resize args\n * @returns {void}\n */\nexport function createResize(args) {\n resizeStart = args.resizeBegin;\n resize = args.resizing;\n resizeEnd = args.resizeComplete;\n targetElement = getDOMElement(args.element);\n containerElement = getDOMElement(args.boundary);\n var directions = args.direction.split(' ');\n for (var i = 0; i < directions.length; i++) {\n if (dialogBorderResize.indexOf(directions[i]) >= 0 && directions[i]) {\n setBorderResizeElm(directions[i]);\n }\n else if (directions[i].trim() !== '') {\n var resizeHandler = createElement('div', { className: 'e-icons ' + RESIZE_HANDLER + ' ' + 'e-' + directions[i] });\n targetElement.appendChild(resizeHandler);\n }\n }\n minHeight = args.minHeight;\n minWidth = args.minWidth;\n maxWidth = args.maxWidth;\n maxHeight = args.maxHeight;\n if (args.proxy && args.proxy.element && args.proxy.element.classList.contains('e-dialog')) {\n wireEvents(args.proxy);\n }\n else {\n wireEvents();\n }\n}\n/**\n *\n * @param {string} direction - specifies the string\n * @returns {void}\n */\nfunction setBorderResizeElm(direction) {\n calculateValues();\n var borderBottom = createElement('span', {\n attrs: {\n 'unselectable': 'on', 'contenteditable': 'false'\n }\n });\n borderBottom.setAttribute('class', 'e-dialog-border-resize e-' + direction);\n if (direction === 'south') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.bottom = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'north') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.top = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'east') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.right = '0px';\n borderBottom.style.top = '0px';\n }\n if (direction === 'west') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.left = '0px';\n borderBottom.style.top = '0px';\n }\n targetElement.appendChild(borderBottom);\n}\n/**\n *\n * @param {string} element - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction getDOMElement(element) {\n var domElement;\n if (!isNOU(element)) {\n if (typeof (element) === 'string') {\n domElement = document.querySelector(element);\n }\n else {\n domElement = element;\n }\n }\n return domElement;\n}\n// eslint-disable-next-line\nfunction wireEvents(args) {\n if (isNOU(args)) {\n args = this;\n }\n var resizers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < resizers.length; i++) {\n selectedHandler = resizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n selectedHandler = borderResizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {string} e - specifies the string\n * @returns {string} - returns the string\n */\nfunction getEventType(e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the mouse event\n * @returns {void}\n */\nfunction onMouseDown(e) {\n e.preventDefault();\n targetElement = e.target.parentElement;\n calculateValues();\n originalMouseX = e.pageX;\n originalMouseY = e.pageY;\n e.target.classList.add(FOCUSED_HANDLER);\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n if (this.targetEle && targetElement && targetElement.querySelector('.' + DIALOG_RESIZABLE)) {\n containerElement = this.target === ('body' || 'document.body' || document.body) ? null : this.targetEle;\n maxWidth = this.targetEle.clientWidth;\n maxHeight = this.targetEle.clientHeight;\n }\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, 'mousemove', onMouseMove, this);\n EventHandler.add(document, 'mouseup', onMouseUp, this);\n for (var i = 0; i < RESTRICT_LEFT.length; i++) {\n if (targetElement.classList.contains(RESTRICT_LEFT[i])) {\n setLeft = false;\n }\n else {\n setLeft = true;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseUp(e) {\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.remove(target, 'mousemove', onMouseMove);\n EventHandler.remove(target, touchMoveEvent, onMouseMove);\n EventHandler.remove(target, eventName, onMouseMove);\n if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n document.body.querySelector('.' + FOCUSED_HANDLER).classList.remove(FOCUSED_HANDLER);\n }\n if (!isNOU(resizeEnd)) {\n proxy = this;\n resizeEnd(e, proxy);\n }\n EventHandler.remove(document, 'mouseup', onMouseUp);\n EventHandler.remove(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\n/**\n * @returns {void}\n */\nfunction calculateValues() {\n originalWidth = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('width').replace('px', ''));\n originalHeight = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('height').replace('px', ''));\n originalX = targetElement.getBoundingClientRect().left;\n originalY = targetElement.getBoundingClientRect().top;\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onTouchStart(e) {\n targetElement = e.target.parentElement;\n calculateValues();\n var dialogResizeElement = targetElement.classList.contains('e-dialog');\n if ((e.target.classList.contains(RESIZE_HANDLER) || e.target.classList.contains('e-dialog-border-resize')) && dialogResizeElement) {\n e.target.classList.add(FOCUSED_HANDLER);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n originalMouseX = coordinates.pageX;\n originalMouseY = coordinates.pageY;\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, touchMoveEvent, onMouseMove, this);\n EventHandler.add(document, touchEndEvent, onMouseUp, this);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseMove(e) {\n if (e.target.classList.contains(RESIZE_HANDLER) && e.target.classList.contains(FOCUSED_HANDLER)) {\n selectedHandler = e.target;\n }\n else if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n selectedHandler = document.body.querySelector('.' + FOCUSED_HANDLER);\n }\n if (!isNOU(selectedHandler)) {\n var resizeTowards = '';\n for (var i = 0; i < elementClass.length; i++) {\n if (selectedHandler.classList.contains('e-' + elementClass[i])) {\n resizeTowards = elementClass[i];\n }\n }\n if (!isNOU(resize)) {\n proxy = this;\n resize(e, proxy);\n }\n switch (resizeTowards) {\n case 'south':\n resizeSouth(e);\n break;\n case 'north':\n resizeNorth(e);\n break;\n case 'west':\n resizeWest(e);\n break;\n case 'east':\n resizeEast(e);\n break;\n case 'south-east':\n resizeSouth(e);\n resizeEast(e);\n break;\n case 'south-west':\n resizeSouth(e);\n resizeWest(e);\n break;\n case 'north-east':\n resizeNorth(e);\n resizeEast(e);\n break;\n case 'north-west':\n resizeNorth(e);\n resizeWest(e);\n break;\n default: break;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {HTMLElement} element - specifies the eleemnt\n * @returns {ClientRect} - returns the client\n */\nfunction getClientRectValues(element) {\n return element.getBoundingClientRect();\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeSouth(e) {\n var documentHeight = document.documentElement.clientHeight;\n var calculateValue = false;\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var currentpageY = coordinates.pageY;\n var targetRectValues = getClientRectValues(targetElement);\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && ((documentHeight - currentpageY) >= 0 || (targetRectValues.top < 0))) {\n calculateValue = true;\n }\n var calculatedHeight = originalHeight + (currentpageY - originalMouseY);\n calculatedHeight = (calculatedHeight > minHeight) ? calculatedHeight : minHeight;\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = containerRectValues.top;\n }\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetHeight - containerElement.clientHeight;\n var topWithoutborder = (targetRectValues.top - containerTop) - (borderValue / 2);\n topWithoutborder = (topWithoutborder < 0) ? 0 : topWithoutborder;\n if (targetRectValues.top > 0 && (topWithoutborder + calculatedHeight) > maxHeight) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.height = (maxHeight - parseInt(topWithoutborder.toString(), 10)) + 'px';\n return;\n }\n var targetTop = 0;\n if (calculateValue) {\n if (targetRectValues.top < 0 && (documentHeight + (targetRectValues.height + targetRectValues.top) > 0)) {\n targetTop = targetRectValues.top;\n if ((calculatedHeight + targetTop) <= 30) {\n calculatedHeight = (targetRectValues.height - (targetRectValues.height + targetRectValues.top)) + 30;\n }\n }\n if (((calculatedHeight + targetRectValues.top) >= maxHeight)) {\n targetElement.style.height = targetRectValues.height +\n (documentHeight - (targetRectValues.height + targetRectValues.top)) + 'px';\n }\n var calculatedTop = (isNOU(containerElement)) ? targetTop : topWithoutborder;\n if (calculatedHeight >= minHeight && ((calculatedHeight + calculatedTop) <= maxHeight)) {\n targetElement.style.height = calculatedHeight + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeNorth(e) {\n var calculateValue = false;\n var boundaryRectValues;\n var pageY = (getEventType(e.type) === 'mouse') ? e.pageY : e.touches[0].pageY;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement)) {\n boundaryRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement) && (targetRectValues.top - boundaryRectValues.top) > 0) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageY > 0) {\n calculateValue = true;\n }\n var currentHeight = originalHeight - (pageY - originalMouseY);\n if (calculateValue) {\n if (currentHeight >= minHeight && currentHeight <= maxHeight) {\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = boundaryRectValues.top;\n }\n var top_1 = (originalY - containerTop) + (pageY - originalMouseY);\n top_1 = top_1 > 0 ? top_1 : 1;\n targetElement.style.height = currentHeight + 'px';\n targetElement.style.top = top_1 + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeWest(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var rectValues;\n if (!isNOU(containerElement)) {\n rectValues = getClientRectValues(containerElement);\n }\n var pageX = (getEventType(e.type) === 'mouse') ? e.pageX : e.touches[0].pageX;\n var targetRectValues = getClientRectValues(targetElement);\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetWidth - containerElement.clientWidth;\n /* eslint-disable */\n var left = isNOU(containerElement) ? 0 : rectValues.left;\n var containerWidth = isNOU(containerElement) ? 0 : rectValues.width;\n /* eslint-enable */\n if (isNOU(resizeWestWidth)) {\n if (!isNOU(containerElement)) {\n resizeWestWidth = (((targetRectValues.left - left) - borderValue / 2)) + targetRectValues.width;\n resizeWestWidth = resizeWestWidth + (containerWidth - borderValue - resizeWestWidth);\n }\n else {\n resizeWestWidth = documentWidth;\n }\n }\n if (!isNOU(containerElement) &&\n (Math.floor((targetRectValues.left - rectValues.left) + targetRectValues.width +\n (rectValues.right - targetRectValues.right)) - borderValue) <= maxWidth) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageX >= 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth - (pageX - originalMouseX);\n if (setLeft) {\n calculatedWidth = (calculatedWidth > resizeWestWidth) ? resizeWestWidth : calculatedWidth;\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = rectValues.left;\n }\n var left_1 = (originalX - containerLeft) + (pageX - originalMouseX);\n left_1 = (left_1 > 0) ? left_1 : 1;\n if (calculatedWidth !== previousWidth && setWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n if (setLeft) {\n targetElement.style.left = left_1 + 'px';\n if (left_1 === 1) {\n setWidth = false;\n }\n else {\n setWidth = true;\n }\n }\n }\n }\n previousWidth = calculatedWidth;\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeEast(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var pageX = coordinates.pageX;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement) && (((targetRectValues.left - containerRectValues.left) + targetRectValues.width) <= maxWidth\n || (targetRectValues.right - containerRectValues.left) >= targetRectValues.width)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && (documentWidth - pageX) > 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth + (pageX - originalMouseX);\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = containerRectValues.left;\n }\n if (((targetRectValues.left - containerLeft) + calculatedWidth) > maxWidth) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.width = maxWidth - (targetRectValues.left - containerLeft) + 'px';\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {number} minimumHeight - specifies the number\n * @returns {void}\n */\nexport function setMinHeight(minimumHeight) {\n minHeight = minimumHeight;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxWidth(value) {\n maxWidth = value;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxHeight(value) {\n maxHeight = value;\n}\n/**\n * @returns {void}\n */\nexport function removeResize() {\n var handlers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < handlers.length; i++) {\n detach(handlers[i]);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n detach(borderResizers[i]);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, Collection, L10n, Complex, compile, createElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, attributes, prepend, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, append, EventHandler, Draggable, extend } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, Browser } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup, PositionData, getZindexPartial } from '../popup/popup';\nimport { createResize, removeResize, setMinHeight, setMaxWidth, setMaxHeight } from '../common/resize';\nvar ButtonProps = /** @class */ (function (_super) {\n __extends(ButtonProps, _super);\n function ButtonProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], ButtonProps.prototype, \"isFlat\", void 0);\n __decorate([\n Property()\n ], ButtonProps.prototype, \"buttonModel\", void 0);\n __decorate([\n Property('Button')\n ], ButtonProps.prototype, \"type\", void 0);\n __decorate([\n Event()\n ], ButtonProps.prototype, \"click\", void 0);\n return ButtonProps;\n}(ChildProperty));\nexport { ButtonProps };\n/**\n * Configures the animation properties for both open and close the dialog.\n */\nvar AnimationSettings = /** @class */ (function (_super) {\n __extends(AnimationSettings, _super);\n function AnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Fade')\n ], AnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], AnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], AnimationSettings.prototype, \"delay\", void 0);\n return AnimationSettings;\n}(ChildProperty));\nexport { AnimationSettings };\nvar ROOT = 'e-dialog';\nvar RTL = 'e-rtl';\nvar DLG_HEADER_CONTENT = 'e-dlg-header-content';\nvar DLG_HEADER = 'e-dlg-header';\nvar DLG_FOOTER_CONTENT = 'e-footer-content';\nvar MODAL_DLG = 'e-dlg-modal';\nvar DLG_CONTENT = 'e-dlg-content';\nvar DLG_CLOSE_ICON = 'e-icon-dlg-close';\nvar DLG_OVERLAY = 'e-dlg-overlay';\nvar DLG_TARGET = 'e-dlg-target';\nvar DLG_CONTAINER = 'e-dlg-container';\nvar SCROLL_DISABLED = 'e-scroll-disabled';\nvar DLG_PRIMARY_BUTTON = 'e-primary';\nvar ICON = 'e-icons';\nvar POPUP_ROOT = 'e-popup';\nvar DEVICE = 'e-device';\nvar FULLSCREEN = 'e-dlg-fullscreen';\nvar DLG_CLOSE_ICON_BTN = 'e-dlg-closeicon-btn';\nvar DLG_HIDE = 'e-popup-close';\nvar DLG_SHOW = 'e-popup-open';\nvar DLG_UTIL_DEFAULT_TITLE = 'Information';\nvar DLG_UTIL_ROOT = 'e-scroll-disabled';\nvar DLG_UTIL_ALERT = 'e-alert-dialog';\nvar DLG_UTIL_CONFIRM = 'e-confirm-dialog';\nvar DLG_RESIZABLE = 'e-dlg-resizable';\nvar DLG_RESTRICT_LEFT_VALUE = 'e-restrict-left';\nvar DLG_RESTRICT_WIDTH_VALUE = 'e-resize-viewport';\nvar DLG_REF_ELEMENT = 'e-dlg-ref-element';\nvar DLG_USER_ACTION_CLOSED = 'user action';\nvar DLG_CLOSE_ICON_CLOSED = 'close icon';\nvar DLG_ESCAPE_CLOSED = 'escape';\nvar DLG_OVERLAYCLICK_CLOSED = 'overlayClick';\nvar DLG_DRAG = 'e-draggable';\n/**\n * Represents the dialog component that displays the information and get input from the user.\n * Two types of dialog components are `Modal and Modeless (non-modal)` depending on its interaction with parent application.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Dialog = /** @class */ (function (_super) {\n __extends(Dialog, _super);\n /*\n * * Constructor for creating the widget\n *\n * @param\n * @param\n * @hidden\n */\n function Dialog(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n *Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.render = function () {\n this.initialize();\n this.initRender();\n this.wireEvents();\n if (this.width === '100%') {\n this.element.style.width = '';\n }\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n if (this.enableResize) {\n this.setResize();\n if (this.animationSettings.effect === 'None') {\n this.getMinHeight();\n }\n }\n this.renderComplete();\n };\n Dialog.prototype.initializeValue = function () {\n this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n };\n /**\n *Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.preRender = function () {\n var _this = this;\n this.initializeValue();\n this.headerContent = null;\n this.allowMaxHeight = true;\n this.preventVisibility = true;\n this.clonedEle = this.element.cloneNode(true);\n this.closeIconClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_CLOSE_ICON_CLOSED;\n _this.hide(event);\n };\n this.dlgOverlayClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_OVERLAYCLICK_CLOSED;\n event.preventFocus = false;\n _this.trigger('overlayClick', event, function (overlayClickEventArgs) {\n if (!overlayClickEventArgs.preventFocus) {\n _this.focusContent();\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n };\n var localeText = { close: 'Close' };\n this.l10n = new L10n('dialog', localeText, this.locale);\n this.checkPositionData();\n if (isNullOrUndefined(this.target)) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.target = document.body;\n this.isProtectedOnChange = prevOnChange;\n }\n };\n Dialog.prototype.updatePersistData = function () {\n if (this.enablePersistence) {\n this.setProperties({ width: parseFloat(this.element.style.width), height: parseFloat(this.element.style.height),\n position: { X: parseFloat(this.dragObj.element.style.left), Y: parseFloat(this.dragObj.element.style.top) } }, true);\n }\n };\n Dialog.prototype.isNumberValue = function (value) {\n var isNumber = /^[-+]?\\d*\\.?\\d+$/.test(value);\n return isNumber;\n };\n Dialog.prototype.checkPositionData = function () {\n if (!isNullOrUndefined(this.position)) {\n if (!isNullOrUndefined(this.position.X) && (typeof (this.position.X) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.X);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.X = parseFloat(this.position.X);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n if (!isNullOrUndefined(this.position.Y) && (typeof (this.position.Y) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.Y);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.Y = parseFloat(this.position.Y);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n }\n };\n Dialog.prototype.getEle = function (list, selector) {\n var element = undefined;\n for (var i = 0; i < list.length; i++) {\n if (list[i].classList.contains(selector)) {\n element = list[i];\n break;\n }\n }\n return element;\n };\n /* istanbul ignore next */\n Dialog.prototype.getMinHeight = function () {\n var computedHeaderHeight = '0px';\n var computedFooterHeight = '0px';\n if (!isNullOrUndefined(this.element.querySelector('.' + DLG_HEADER_CONTENT))) {\n computedHeaderHeight = getComputedStyle(this.headerContent).height;\n }\n var footerEle = this.getEle(this.element.children, DLG_FOOTER_CONTENT);\n if (!isNullOrUndefined(footerEle)) {\n computedFooterHeight = getComputedStyle(footerEle).height;\n }\n var headerHeight = parseInt(computedHeaderHeight.slice(0, computedHeaderHeight.indexOf('p')), 10);\n var footerHeight = parseInt(computedFooterHeight.slice(0, computedFooterHeight.indexOf('p')), 10);\n setMinHeight(headerHeight + 30 + (isNaN(footerHeight) ? 0 : footerHeight));\n return (headerHeight + 30 + footerHeight);\n };\n Dialog.prototype.onResizeStart = function (args, dialogObj) {\n dialogObj.trigger('resizeStart', args);\n return args.cancel;\n };\n Dialog.prototype.onResizing = function (args, dialogObj) {\n dialogObj.trigger('resizing', args);\n };\n Dialog.prototype.onResizeComplete = function (args, dialogObj) {\n dialogObj.trigger('resizeStop', args);\n this.updatePersistData();\n };\n Dialog.prototype.setResize = function () {\n if (this.enableResize) {\n if (this.isBlazorServerRender() && !isNullOrUndefined(this.element.querySelector('.e-icons.e-resize-handle'))) {\n return;\n }\n this.element.classList.add(DLG_RESIZABLE);\n var computedHeight = getComputedStyle(this.element).minHeight;\n var computedWidth = getComputedStyle(this.element).minWidth;\n var direction = '';\n for (var i = 0; i < this.resizeHandles.length; i++) {\n if (this.resizeHandles[i] === 'All') {\n direction = 'south north east west north-east north-west south-east south-west';\n break;\n }\n else {\n var directionValue = '';\n switch (this.resizeHandles[i].toString()) {\n case 'SouthEast':\n directionValue = 'south-east';\n break;\n case 'SouthWest':\n directionValue = 'south-west';\n break;\n case 'NorthEast':\n directionValue = 'north-east';\n break;\n case 'NorthWest':\n directionValue = 'north-west';\n break;\n default:\n directionValue = this.resizeHandles[i].toString();\n break;\n }\n direction += directionValue.toLocaleLowerCase() + ' ';\n }\n }\n if (this.enableRtl && direction.trim() === 'south-east') {\n direction = 'south-west';\n }\n else if (this.enableRtl && direction.trim() === 'south-west') {\n direction = 'south-east';\n }\n if (this.isModal && this.enableRtl) {\n this.element.classList.add(DLG_RESTRICT_LEFT_VALUE);\n }\n else if (this.isModal && this.target === document.body) {\n this.element.classList.add(DLG_RESTRICT_WIDTH_VALUE);\n }\n createResize({\n element: this.element,\n direction: direction,\n minHeight: parseInt(computedHeight.slice(0, computedWidth.indexOf('p')), 10),\n maxHeight: this.targetEle.clientHeight,\n minWidth: parseInt(computedWidth.slice(0, computedWidth.indexOf('p')), 10),\n maxWidth: this.targetEle.clientWidth,\n boundary: this.target === document.body ? null : this.targetEle,\n resizeBegin: this.onResizeStart.bind(this),\n resizeComplete: this.onResizeComplete.bind(this),\n resizing: this.onResizing.bind(this),\n proxy: this\n });\n this.wireWindowResizeEvent();\n }\n else {\n removeResize();\n this.unWireWindowResizeEvent();\n if (this.isModal) {\n this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n }\n else {\n this.element.classList.remove(DLG_RESTRICT_WIDTH_VALUE);\n }\n this.element.classList.remove(DLG_RESIZABLE);\n }\n };\n Dialog.prototype.getFocusElement = function (target) {\n var value = 'input,select,textarea,button:enabled,a,[contenteditable=\"true\"],[tabindex]';\n var items = target.querySelectorAll(value);\n return { element: items[items.length - 1] };\n };\n /* istanbul ignore next */\n Dialog.prototype.keyDown = function (event) {\n var _this = this;\n if (event.keyCode === 9) {\n if (this.isModal) {\n var buttonObj = void 0;\n if (!isNullOrUndefined(this.btnObj)) {\n buttonObj = this.btnObj[this.btnObj.length - 1];\n }\n if ((isNullOrUndefined(this.btnObj)) && (!isNullOrUndefined(this.ftrTemplateContent))) {\n buttonObj = this.getFocusElement(this.ftrTemplateContent);\n }\n if (isNullOrUndefined(this.btnObj) && isNullOrUndefined(this.ftrTemplateContent) && !isNullOrUndefined(this.contentEle)) {\n buttonObj = this.getFocusElement(this.contentEle);\n }\n if (!isNullOrUndefined(buttonObj) && document.activeElement === buttonObj.element && !event.shiftKey) {\n event.preventDefault();\n this.focusableElements(this.element).focus();\n }\n if (document.activeElement === this.focusableElements(this.element) && event.shiftKey) {\n event.preventDefault();\n if (!isNullOrUndefined(buttonObj)) {\n buttonObj.element.focus();\n }\n }\n }\n }\n var element = document.activeElement;\n var isTagName = (['input', 'textarea'].indexOf(element.tagName.toLowerCase()) > -1);\n var isContentEdit = false;\n if (!isTagName) {\n isContentEdit = element.hasAttribute('contenteditable') && element.getAttribute('contenteditable') === 'true';\n }\n if (event.keyCode === 27 && this.closeOnEscape) {\n this.dlgClosedBy = DLG_ESCAPE_CLOSED;\n var query = document.querySelector('.e-popup-open:not(.e-dialog)');\n // 'document.querySelector' is used to find the elements rendered based on body\n if (!(!isNullOrUndefined(query) && !query.classList.contains('e-toolbar-pop'))) {\n this.hide(event);\n }\n }\n if ((event.keyCode === 13 && !event.ctrlKey && element.tagName.toLowerCase() !== 'textarea' &&\n isTagName && !isNullOrUndefined(this.primaryButtonEle)) ||\n (event.keyCode === 13 && event.ctrlKey && (element.tagName.toLowerCase() === 'textarea' ||\n isContentEdit)) && !isNullOrUndefined(this.primaryButtonEle)) {\n var buttonIndex_1;\n var firstPrimary = this.buttons.some(function (data, index) {\n buttonIndex_1 = index;\n // eslint-disable-next-line\n var buttonModel = data.buttonModel;\n return !isNullOrUndefined(buttonModel) && buttonModel.isPrimary === true;\n });\n if (firstPrimary && typeof (this.buttons[buttonIndex_1].click) === 'function') {\n setTimeout(function () {\n _this.buttons[buttonIndex_1].click.call(_this, event);\n });\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initialize = function () {\n if (!isNullOrUndefined(this.target)) {\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n }\n if (!this.isBlazorServerRender()) {\n addClass([this.element], ROOT);\n }\n if (Browser.isDevice) {\n addClass([this.element], DEVICE);\n }\n if (!this.isBlazorServerRender()) {\n this.setCSSClass();\n }\n this.setMaxHeight();\n };\n /**\n * Initialize the rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initRender = function () {\n var _this = this;\n this.initialRender = true;\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { role: 'dialog' });\n }\n if (this.zIndex === 1000) {\n this.setzIndex(this.element, false);\n this.calculatezIndex = true;\n }\n else {\n this.calculatezIndex = false;\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.element.getElementsByClassName('e-dlg-header-content')[0];\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.contentEle)) {\n this.contentEle = this.element.querySelector('#' + this.element.id + '_dialog-content');\n }\n if (!this.isBlazorServerRender()) {\n this.setTargetContent();\n if (this.header !== '' && !isNullOrUndefined(this.header)) {\n this.setHeader();\n }\n this.renderCloseIcon();\n this.setContent();\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setFooterTemplate();\n }\n else if (!isNullOrUndefined(this.buttons[0].buttonModel)) {\n this.setButton();\n }\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n this.setButton();\n }\n }\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { 'aria-modal': (this.isModal ? 'true' : 'false') });\n if (this.isModal) {\n this.setIsModal();\n }\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.dlgContainer)) {\n this.dlgContainer = this.element.parentElement;\n for (var i = 0, childNodes = this.dlgContainer.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains('e-dlg-overlay')) {\n this.dlgOverlay = childNodes[i];\n }\n }\n }\n if (this.element.classList.contains(DLG_UTIL_ALERT) !== true && this.element.classList.contains(DLG_UTIL_CONFIRM) !== true\n && !isNullOrUndefined(this.element.parentElement)) {\n var parentEle = this.isModal ? this.dlgContainer.parentElement : this.element.parentElement;\n this.refElement = this.createElement('div', { className: DLG_REF_ELEMENT });\n parentEle.insertBefore(this.refElement, (this.isModal ? this.dlgContainer : this.element));\n }\n if (!isNullOrUndefined(this.targetEle)) {\n // eslint-disable-next-line\n this.isModal ? this.targetEle.appendChild(this.dlgContainer) : this.targetEle.appendChild(this.element);\n }\n this.popupObj = new Popup(this.element, {\n height: this.height,\n width: this.width,\n zIndex: this.zIndex,\n relateTo: this.target,\n actionOnScroll: 'none',\n enableRtl: this.enableRtl,\n // eslint-disable-next-line\n open: function (event) {\n var eventArgs = {\n container: _this.isModal ? _this.dlgContainer : _this.element,\n element: _this.element,\n target: _this.target,\n preventFocus: false\n };\n if (_this.enableResize) {\n _this.resetResizeIcon();\n }\n _this.trigger('open', eventArgs, function (openEventArgs) {\n if (!openEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n },\n // eslint-disable-next-line\n close: function (event) {\n if (_this.isModal) {\n addClass([_this.dlgOverlay], 'e-fade');\n }\n _this.unBindEvent(_this.element);\n if (_this.isModal) {\n _this.dlgContainer.style.display = 'none';\n }\n _this.trigger('close', _this.closeArgs);\n var activeEle = document.activeElement;\n if (!isNullOrUndefined(activeEle) && !isNullOrUndefined((activeEle).blur)) {\n activeEle.blur();\n }\n if (!isNullOrUndefined(_this.storeActiveElement) && !isNullOrUndefined(_this.storeActiveElement.focus)) {\n _this.storeActiveElement.focus();\n }\n }\n });\n this.positionChange();\n this.setEnableRTL();\n if (!this.isBlazorServerRender()) {\n addClass([this.element], DLG_HIDE);\n if (this.isModal) {\n this.setOverlayZindex();\n }\n }\n if (this.visible) {\n this.show();\n }\n else {\n if (this.isModal) {\n this.dlgOverlay.style.display = 'none';\n }\n }\n this.initialRender = false;\n };\n Dialog.prototype.resetResizeIcon = function () {\n var dialogConHeight = this.getMinHeight();\n if (this.targetEle.offsetHeight < dialogConHeight) {\n var className = this.enableRtl ? 'e-south-west' : 'e-south-east';\n var resizeIcon = this.element.querySelector('.' + className);\n if (!isNullOrUndefined(resizeIcon)) {\n resizeIcon.style.bottom = '-' + dialogConHeight.toString() + 'px';\n }\n }\n };\n Dialog.prototype.setOverlayZindex = function (zIndexValue) {\n var zIndex;\n if (isNullOrUndefined(zIndexValue)) {\n zIndex = parseInt(this.element.style.zIndex, 10) ? parseInt(this.element.style.zIndex, 10) : this.zIndex;\n }\n else {\n zIndex = zIndexValue;\n }\n this.dlgOverlay.style.zIndex = (zIndex - 1).toString();\n this.dlgContainer.style.zIndex = zIndex.toString();\n };\n Dialog.prototype.positionChange = function () {\n if (this.isModal) {\n if (!isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y))) {\n this.setPopupPosition();\n }\n else if ((!isNaN(parseFloat(this.position.X)) && isNaN(parseFloat(this.position.Y)))\n || (isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y)))) {\n this.setPopupPosition();\n }\n else {\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n this.dlgContainer.classList.add('e-dlg-' + this.position.X + '-' + this.position.Y);\n }\n }\n else {\n this.setPopupPosition();\n }\n };\n Dialog.prototype.setPopupPosition = function () {\n this.popupObj.setProperties({\n position: {\n X: this.position.X, Y: this.position.Y\n }\n });\n };\n Dialog.prototype.setAllowDragging = function () {\n var _this = this;\n var handleContent = '.' + DLG_HEADER_CONTENT;\n if (!this.element.classList.contains(DLG_DRAG)) {\n this.dragObj = new Draggable(this.element, {\n clone: false,\n isDragScroll: true,\n abort: '.e-dlg-closeicon-btn',\n handle: handleContent,\n dragStart: function (event) {\n _this.trigger('dragStart', event, function (dragEventArgs) {\n if (isBlazor()) {\n dragEventArgs.bindEvents(event.dragElement);\n }\n });\n },\n dragStop: function (event) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.position)) {\n _this.dlgContainer.classList.remove('e-dlg-' + _this.position.X + '-' + _this.position.Y);\n }\n // Reset the dialog position after drag completion.\n _this.element.style.position = 'relative';\n }\n _this.trigger('dragStop', event);\n _this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n _this.updatePersistData();\n },\n drag: function (event) {\n _this.trigger('drag', event);\n }\n });\n if (!isNullOrUndefined(this.targetEle)) {\n this.dragObj.dragArea = this.targetEle;\n }\n }\n };\n Dialog.prototype.setButton = function () {\n if (!this.isBlazorServerRender()) {\n this.buttonContent = [];\n this.btnObj = [];\n // eslint-disable-next-line\n var primaryBtnFlag = true;\n for (var i = 0; i < this.buttons.length; i++) {\n var buttonType = !isNullOrUndefined(this.buttons[i].type) ? this.buttons[i].type.toLowerCase() : 'button';\n var btn = this.createElement('button', { className: this.cssClass, attrs: { type: buttonType } });\n this.buttonContent.push(btn.outerHTML);\n }\n this.setFooterTemplate();\n }\n var footerBtn;\n for (var i = 0, childNodes = this.element.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(DLG_FOOTER_CONTENT)) {\n footerBtn = childNodes[i].querySelectorAll('button');\n }\n }\n for (var i = 0; i < this.buttons.length; i++) {\n if (!this.isBlazorServerRender()) {\n this.btnObj[i] = new Button(this.buttons[i].buttonModel);\n }\n if (this.isBlazorServerRender()) {\n this.ftrTemplateContent = this.element.querySelector('.' + DLG_FOOTER_CONTENT);\n }\n if (!isNullOrUndefined(this.ftrTemplateContent) && footerBtn.length > 0) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.add(footerBtn[i], 'click', this.buttons[i].click, this);\n }\n if (typeof (this.buttons[i].click) === 'object') {\n EventHandler.add(footerBtn[i], 'click', this.buttonClickHandler.bind(this, i), this);\n }\n }\n if (!this.isBlazorServerRender() && !isNullOrUndefined(this.ftrTemplateContent)) {\n this.btnObj[i].appendTo(this.ftrTemplateContent.children[i]);\n if (this.buttons[i].isFlat) {\n this.btnObj[i].element.classList.add('e-flat');\n }\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n }\n };\n Dialog.prototype.buttonClickHandler = function (index) {\n this.trigger('buttons[' + index + '].click', {});\n };\n Dialog.prototype.setContent = function () {\n this.contentEle = this.createElement('div', { className: DLG_CONTENT, id: this.element.id + '_dialog-content' });\n if (this.innerContentElement) {\n this.contentEle.appendChild(this.innerContentElement);\n }\n else if (!isNullOrUndefined(this.content) && this.content !== '' || !this.initialRender) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (this.content) === 'string' && !isBlazor()) {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n else if (this.content instanceof HTMLElement) {\n this.contentEle.appendChild(this.content);\n }\n else {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n }\n if (!isNullOrUndefined(this.headerContent)) {\n this.element.insertBefore(this.contentEle, this.element.children[1]);\n }\n else {\n this.element.insertBefore(this.contentEle, this.element.children[0]);\n }\n if (this.height === 'auto') {\n if (!this.isBlazorServerRender() && Browser.isIE && this.element.style.width === '' && !isNullOrUndefined(this.width)) {\n this.element.style.width = formatUnit(this.width);\n }\n this.setMaxHeight();\n }\n };\n Dialog.prototype.setTemplate = function (template, toElement, prop) {\n var templateFn;\n var templateProps;\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (toElement.classList.contains(DLG_HEADER)) {\n templateProps = this.element.id + 'header';\n }\n else if (toElement.classList.contains(DLG_FOOTER_CONTENT)) {\n templateProps = this.element.id + 'footerTemplate';\n }\n else {\n templateProps = this.element.id + 'content';\n }\n var templateValue;\n if (!isNullOrUndefined(template.outerHTML)) {\n toElement.appendChild(template);\n }\n else if ((typeof template === 'string') || (typeof template !== 'string') || (isBlazor() && !this.isStringTemplate)) {\n if ((typeof template === 'string')) {\n template = this.sanitizeHelper(template);\n }\n if (this.isVue || typeof template !== 'string') {\n templateFn = compile(template);\n templateValue = template;\n }\n else {\n toElement.innerHTML = template;\n }\n }\n var fromElements = [];\n if (!isNullOrUndefined(templateFn)) {\n var isString = (isBlazor() &&\n !this.isStringTemplate && (templateValue).indexOf('
    Blazor') === 0) ?\n this.isStringTemplate : true;\n for (var _i = 0, _a = templateFn({}, this, prop, templateProps, isString); _i < _a.length; _i++) {\n var item = _a[_i];\n fromElements.push(item);\n }\n append([].slice.call(fromElements), toElement);\n }\n };\n /*\n * @returns {void}\n * @hidden\n * @value\n */\n Dialog.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var dialogItem = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(dialogItem, dialogItem, beforeEvent);\n this.trigger('beforeSanitizeHtml', dialogItem);\n if (dialogItem.cancel && !isNullOrUndefined(dialogItem.helper)) {\n value = dialogItem.helper(value);\n }\n else if (!dialogItem.cancel) {\n value = SanitizeHtmlHelper.serializeValue(dialogItem, value);\n }\n }\n return value;\n };\n Dialog.prototype.setMaxHeight = function () {\n if (!this.allowMaxHeight) {\n return;\n }\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) && (this.targetEle.offsetHeight < window.innerHeight) ?\n (this.targetEle.offsetHeight - 20) + 'px' : (window.innerHeight - 20) + 'px';\n this.element.style.display = display;\n if (Browser.isIE && this.height === 'auto' && !isNullOrUndefined(this.contentEle)\n && this.element.offsetHeight < this.contentEle.offsetHeight) {\n this.element.style.height = 'inherit';\n }\n };\n Dialog.prototype.setEnableRTL = function () {\n if (!this.isBlazorServerRender()) {\n // eslint-disable-next-line\n this.enableRtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n }\n if (!isNullOrUndefined(this.element.querySelector('.e-resize-handle'))) {\n removeResize();\n this.setResize();\n }\n };\n Dialog.prototype.setTargetContent = function () {\n var _this = this;\n if (isNullOrUndefined(this.content) || this.content === '') {\n var isContent = this.element.innerHTML.replace(/\\s|<(\\/?|\\/?)(!--!--)>/g, '') !== '';\n if (this.element.children.length > 0 || isContent) {\n this.innerContentElement = document.createDocumentFragment();\n [].slice.call(this.element.childNodes).forEach(function (el) {\n if (el.nodeType !== 8) {\n _this.innerContentElement.appendChild(el);\n }\n });\n }\n }\n };\n Dialog.prototype.setHeader = function () {\n if (this.headerEle) {\n this.headerEle.innerHTML = '';\n }\n else {\n this.headerEle = this.createElement('div', { id: this.element.id + '_title', className: DLG_HEADER });\n }\n this.createHeaderContent();\n this.headerContent.appendChild(this.headerEle);\n this.setTemplate(this.header, this.headerEle, 'header');\n attributes(this.element, { 'aria-labelledby': this.element.id + '_title' });\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n };\n Dialog.prototype.setFooterTemplate = function () {\n if (this.ftrTemplateContent) {\n this.ftrTemplateContent.innerHTML = '';\n }\n else {\n this.ftrTemplateContent = this.createElement('div', {\n className: DLG_FOOTER_CONTENT\n });\n }\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setTemplate(this.footerTemplate, this.ftrTemplateContent, 'footerTemplate');\n }\n else {\n this.ftrTemplateContent.innerHTML = this.buttonContent.join('');\n }\n this.element.appendChild(this.ftrTemplateContent);\n };\n Dialog.prototype.createHeaderContent = function () {\n if (isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.createElement('div', { id: this.element.id + '_dialog-header', className: DLG_HEADER_CONTENT });\n }\n };\n Dialog.prototype.renderCloseIcon = function () {\n if (this.showCloseIcon) {\n this.closeIcon = this.createElement('button', { className: DLG_CLOSE_ICON_BTN, attrs: { type: 'button' } });\n this.closeIconBtnObj = new Button({ cssClass: 'e-flat', iconCss: DLG_CLOSE_ICON + ' ' + ICON });\n this.closeIconTitle();\n if (!isNullOrUndefined(this.headerContent)) {\n prepend([this.closeIcon], this.headerContent);\n }\n else {\n this.createHeaderContent();\n prepend([this.closeIcon], this.headerContent);\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n }\n this.closeIconBtnObj.appendTo(this.closeIcon);\n }\n };\n Dialog.prototype.closeIconTitle = function () {\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n this.closeIcon.setAttribute('title', closeIconTitle);\n this.closeIcon.setAttribute('aria-label', closeIconTitle);\n };\n Dialog.prototype.setCSSClass = function (oldCSSClass) {\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n removeClass([this.dlgContainer], oldCSSClass.split(' '));\n }\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n addClass([this.dlgContainer], this.cssClass.split(' '));\n }\n }\n };\n Dialog.prototype.setIsModal = function () {\n this.dlgContainer = this.createElement('div', { className: DLG_CONTAINER });\n this.setCSSClass();\n this.element.classList.remove(DLG_SHOW);\n this.element.parentNode.insertBefore(this.dlgContainer, this.element);\n this.dlgContainer.appendChild(this.element);\n addClass([this.element], MODAL_DLG);\n this.dlgOverlay = this.createElement('div', { className: DLG_OVERLAY });\n this.dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.dlgContainer.appendChild(this.dlgOverlay);\n };\n Dialog.prototype.getValidFocusNode = function (items) {\n var node;\n for (var u = 0; u < items.length; u++) {\n node = items[u];\n if ((node.clientHeight > 0 || (node.tagName.toLowerCase() === 'a' && node.hasAttribute('href'))) && node.tabIndex > -1 &&\n !node.disabled && !this.disableElement(node, '[disabled],[aria-disabled=\"true\"],[type=\"hidden\"]')) {\n return node;\n }\n else {\n node = null;\n }\n }\n return node;\n };\n Dialog.prototype.focusableElements = function (content) {\n if (!isNullOrUndefined(content)) {\n var value = 'input,select,textarea,button,a,[contenteditable=\"true\"],[tabindex]';\n var items = content.querySelectorAll(value);\n return this.getValidFocusNode(items);\n }\n return null;\n };\n Dialog.prototype.getAutoFocusNode = function (container) {\n var node = container.querySelector('.' + DLG_CLOSE_ICON_BTN);\n var value = '[autofocus]';\n var items = container.querySelectorAll(value);\n var validNode = this.getValidFocusNode(items);\n if (isBlazor()) {\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n if (!isNullOrUndefined(validNode)) {\n node = validNode;\n }\n else {\n validNode = this.focusableElements(this.contentEle);\n if (!isNullOrUndefined(validNode)) {\n return node = validNode;\n }\n else if (!isNullOrUndefined(this.primaryButtonEle)) {\n return this.element.querySelector('.' + DLG_PRIMARY_BUTTON);\n }\n }\n return node;\n };\n Dialog.prototype.disableElement = function (element, t) {\n var elementMatch = element ? element.matches || element.webkitMatchesSelector || element.msGetRegionContent : null;\n if (elementMatch) {\n for (; element; element = element.parentNode) {\n if (element instanceof Element && elementMatch.call(element, t)) {\n /* istanbul ignore next */\n return element;\n }\n }\n }\n return null;\n };\n Dialog.prototype.focusContent = function () {\n var element = this.getAutoFocusNode(this.element);\n var node = !isNullOrUndefined(element) ? element : this.element;\n var userAgent = Browser.userAgent;\n if (userAgent.indexOf('MSIE ') > 0 || userAgent.indexOf('Trident/') > 0) {\n this.element.focus();\n }\n node.focus();\n this.unBindEvent(this.element);\n this.bindEvent(this.element);\n };\n Dialog.prototype.bindEvent = function (element) {\n EventHandler.add(element, 'keydown', this.keyDown, this);\n };\n Dialog.prototype.unBindEvent = function (element) {\n EventHandler.remove(element, 'keydown', this.keyDown);\n };\n Dialog.prototype.updateSanitizeContent = function () {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n };\n Dialog.prototype.isBlazorServerRender = function () {\n return isBlazor() && this.isServerRendered;\n };\n /**\n * Module required function\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getModuleName = function () {\n return 'dialog';\n };\n /**\n * Called internally if any of the property value changed\n *\n * @param {DialogModel} newProp - specifies the new property\n * @param {DialogModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Dialog.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!isNullOrUndefined(this.content) && this.content !== '') {\n if (this.isBlazorServerRender()) {\n this.contentEle = this.element.querySelector('.e-dlg-content');\n }\n if (!isNullOrUndefined(this.contentEle) && this.contentEle.getAttribute('role') !== 'dialog') {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = '';\n }\n if (typeof (this.content) === 'function') {\n this.clearTemplate(['content']);\n detach(this.contentEle);\n this.contentEle = null;\n this.setContent();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n typeof (this.content) === 'string' ? (this.isBlazorServerRender() && (this.contentEle.innerText === '')) ?\n this.contentEle.insertAdjacentHTML('beforeend', this.sanitizeHelper(this.content)) :\n this.updateSanitizeContent() : this.contentEle.appendChild(this.content);\n }\n this.setMaxHeight();\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-content'))) {\n this.setContent();\n }\n }\n }\n else if (!isNullOrUndefined(this.contentEle)) {\n detach(this.contentEle);\n this.contentEle = null;\n }\n break;\n case 'header':\n if (this.header === '' || isNullOrUndefined(this.header)) {\n if (this.headerEle) {\n detach(this.headerEle);\n this.headerEle = null;\n }\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-header-content'))) {\n this.setHeader();\n }\n }\n break;\n case 'footerTemplate':\n if (this.footerTemplate === '' || isNullOrUndefined(this.footerTemplate)) {\n if (!this.ftrTemplateContent) {\n return;\n }\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n this.buttons = [{}];\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-footer-content'))) {\n this.setFooterTemplate();\n }\n this.buttons = [{}];\n }\n break;\n case 'showCloseIcon':\n if (this.element.getElementsByClassName(DLG_CLOSE_ICON).length > 0) {\n if (!this.showCloseIcon && (this.header === '' || isNullOrUndefined(this.header))) {\n detach(this.headerContent);\n this.headerContent = null;\n }\n else if (!this.showCloseIcon) {\n detach(this.closeIcon);\n }\n else {\n if (this.isBlazorServerRender()) {\n this.wireEvents();\n }\n }\n }\n else {\n if (!this.isBlazorServerRender()) {\n this.renderCloseIcon();\n }\n this.wireEvents();\n }\n break;\n case 'locale':\n if (this.showCloseIcon) {\n this.closeIconTitle();\n }\n break;\n case 'visible':\n // eslint-disable-next-line\n this.visible ? this.show() : this.hide();\n break;\n case 'isModal':\n this.updateIsModal();\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n this.updatePersistData();\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n this.updatePersistData();\n break;\n case 'zIndex':\n this.popupObj.zIndex = this.zIndex;\n if (this.isModal) {\n this.setOverlayZindex(this.zIndex);\n }\n if (this.element.style.zIndex !== this.zIndex.toString()) {\n this.calculatezIndex = false;\n }\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'buttons': {\n var buttonCount = this.buttons.length;\n if (!isNullOrUndefined(this.ftrTemplateContent) && !this.isBlazorServerRender()) {\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n }\n for (var i = 0; i < buttonCount; i++) {\n if (!isNullOrUndefined(this.buttons[i].buttonModel)) {\n this.footerTemplate = '';\n this.setButton();\n }\n }\n break;\n }\n case 'allowDragging':\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n else {\n this.dragObj.destroy();\n }\n break;\n case 'target':\n this.setTarget(newProp.target);\n break;\n case 'position':\n this.checkPositionData();\n if (this.isModal) {\n var positionX = !isNullOrUndefined(oldProp.position) && !isNullOrUndefined(oldProp.position.X) ? oldProp.position.X : this.position.X;\n var positionY = !isNullOrUndefined(oldProp.position) && !isNullOrUndefined(oldProp.position.Y) ? oldProp.position.Y : this.position.Y;\n if (this.dlgContainer.classList.contains('e-dlg-' + positionX + '-' + positionY)) {\n this.dlgContainer.classList.remove('e-dlg-' + positionX + '-' + positionY);\n }\n }\n this.positionChange();\n this.updatePersistData();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'enableResize':\n this.setResize();\n break;\n case 'minHeight':\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n break;\n }\n }\n };\n Dialog.prototype.setTarget = function (target) {\n this.popupObj.relateTo = target;\n this.target = target;\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n if (this.dragObj) {\n this.dragObj.dragArea = this.targetEle;\n }\n this.setMaxHeight();\n if (this.isModal) {\n this.updateIsModal();\n }\n if (this.enableResize) {\n this.setResize();\n }\n };\n Dialog.prototype.updateIsModal = function () {\n this.element.setAttribute('aria-modal', this.isModal ? 'true' : 'false');\n if (this.isModal) {\n if (isNullOrUndefined(this.dlgOverlay)) {\n this.setIsModal();\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n if (!isNullOrUndefined(this.targetEle)) {\n this.targetEle.appendChild(this.dlgContainer);\n }\n }\n }\n else {\n removeClass([this.element], MODAL_DLG);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n detach(this.dlgOverlay);\n while (this.dlgContainer.firstChild) {\n this.dlgContainer.parentElement.insertBefore(this.dlgContainer.firstChild, this.dlgContainer);\n }\n this.dlgContainer.parentElement.removeChild(this.dlgContainer);\n }\n if (this.visible) {\n this.show();\n }\n this.positionChange();\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n Dialog.prototype.setzIndex = function (zIndexElement, setPopupZindex) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n var currentzIndex = getZindexPartial(zIndexElement);\n this.zIndex = currentzIndex > this.zIndex ? currentzIndex : this.zIndex;\n this.isProtectedOnChange = prevOnChange;\n if (setPopupZindex) {\n this.popupObj.zIndex = this.zIndex;\n }\n };\n Dialog.prototype.windowResizeHandler = function () {\n setMaxWidth(this.targetEle.clientWidth);\n setMaxHeight(this.targetEle.clientHeight);\n this.setMaxHeight();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getPersistData = function () {\n return this.addOnPersist(['width', 'height', 'position']);\n };\n /**\n * To destroy the widget\n *\n * @returns {void}\n */\n Dialog.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n var classArray = [RTL, MODAL_DLG, DLG_RESIZABLE, DLG_RESTRICT_LEFT_VALUE, FULLSCREEN, DEVICE];\n var attrs = ['role', 'aria-modal', 'aria-labelledby', 'aria-describedby', 'aria-grabbed', 'tabindex', 'style'];\n removeClass([this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n if (!isNullOrUndefined(this.element) && this.element.classList.contains(FULLSCREEN)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n if (this.isModal) {\n removeClass([(!isNullOrUndefined(this.targetEle) ? this.targetEle : document.body)], SCROLL_DISABLED);\n }\n this.unWireEvents();\n if (!isNullOrUndefined(this.btnObj)) {\n for (var i = 0; i < this.btnObj.length; i++) {\n this.btnObj[i].destroy();\n }\n }\n if (!isNullOrUndefined(this.closeIconBtnObj)) {\n this.closeIconBtnObj.destroy();\n }\n if (!isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n if (!isNullOrUndefined(this.popupObj.element) && this.popupObj.element.classList.contains(POPUP_ROOT)) {\n this.popupObj.destroy();\n }\n removeClass([this.element], classArray);\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n removeClass([this.element], this.cssClass.split(' '));\n }\n if (!isNullOrUndefined(this.refElement) && !isNullOrUndefined(this.refElement.parentElement)) {\n this.refElement.parentElement.insertBefore((this.isModal ? this.dlgContainer : this.element), this.refElement);\n detach(this.refElement);\n this.refElement = undefined;\n }\n if (this.isModal && !this.isBlazorServerRender()) {\n detach(this.dlgOverlay);\n this.dlgContainer.parentNode.insertBefore(this.element, this.dlgContainer);\n detach(this.dlgContainer);\n }\n if (!this.isBlazorServerRender()) {\n this.element.innerHTML = this.clonedEle.innerHTML;\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.element.children)) {\n for (var i = 0; i <= this.element.children.length; i++) {\n i = i - i;\n detach(this.element.children[i]);\n }\n }\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[i]);\n }\n this.ftrTemplateContent = null;\n this.headerContent = null;\n this.contentEle = null;\n if (!this.isBlazorServerRender()) {\n _super.prototype.destroy.call(this);\n }\n else {\n this.isDestroyed = true;\n }\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n Dialog.prototype.wireWindowResizeEvent = function () {\n window.addEventListener('resize', this.windowResizeHandler.bind(this));\n };\n Dialog.prototype.unWireWindowResizeEvent = function () {\n window.removeEventListener('resize', this.windowResizeHandler.bind(this));\n };\n /**\n * Binding event to the element while widget creation\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.wireEvents = function () {\n if (this.isBlazorServerRender() && this.showCloseIcon) {\n this.closeIcon = this.element.getElementsByClassName('e-dlg-closeicon-btn')[0];\n }\n if (this.showCloseIcon) {\n EventHandler.add(this.closeIcon, 'click', this.closeIconClickEventHandler, this);\n }\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n /**\n * Unbinding event to the element while widget destroy\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.unWireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.remove(this.closeIcon, 'click', this.closeIconClickEventHandler);\n }\n if (this.isModal) {\n EventHandler.remove(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler);\n }\n if (this.buttons.length > 0 && !isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n for (var i = 0; i < this.buttons.length; i++) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.remove(this.ftrTemplateContent.children[i], 'click', this.buttons[i].click);\n }\n }\n }\n };\n /**\n * Refreshes the dialog's position when the user changes its header and footer height/width dynamically.\n *\n * @returns {void}\n */\n Dialog.prototype.refreshPosition = function () {\n this.popupObj.refreshPosition();\n if (this.element.classList.contains(MODAL_DLG)) {\n this.positionChange();\n }\n };\n /**\n * Returns the current width and height of the Dialog\n *\n * @returns {DialogDimension}- returns the dialog element Dimension.\n * @public\n */\n Dialog.prototype.getDimension = function () {\n var dialogWidth = this.element.offsetWidth;\n var dialogHeight = this.element.offsetHeight;\n return { width: dialogWidth, height: dialogHeight };\n };\n /**\n * Opens the dialog if it is in hidden state.\n * To open the dialog with full screen width, set the parameter to true.\n *\n * @param { boolean } isFullScreen - Enable the fullScreen Dialog.\n * @returns {void}\n */\n Dialog.prototype.show = function (isFullScreen) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (!this.element.classList.contains(DLG_SHOW) || (!isNullOrUndefined(isFullScreen))) {\n if (!isNullOrUndefined(isFullScreen)) {\n this.fullScreen(isFullScreen);\n }\n var eventArgs_1 = isBlazor() ? {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n maxHeight: this.element.style.maxHeight\n } : {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n target: this.target,\n maxHeight: this.element.style.maxHeight\n };\n this.trigger('beforeOpen', eventArgs_1, function (beforeOpenArgs) {\n if (!beforeOpenArgs.cancel) {\n if (_this.element.style.maxHeight !== eventArgs_1.maxHeight) {\n _this.allowMaxHeight = false;\n _this.element.style.maxHeight = eventArgs_1.maxHeight;\n }\n _this.storeActiveElement = document.activeElement;\n _this.element.tabIndex = -1;\n if (_this.isModal && (!isNullOrUndefined(_this.dlgOverlay))) {\n _this.dlgOverlay.style.display = 'block';\n _this.dlgContainer.style.display = 'flex';\n removeClass([_this.dlgOverlay], 'e-fade');\n if (!isNullOrUndefined(_this.targetEle)) {\n if (_this.targetEle === document.body) {\n _this.dlgContainer.style.position = 'fixed';\n }\n else {\n _this.dlgContainer.style.position = 'absolute';\n }\n _this.dlgOverlay.style.position = 'absolute';\n _this.element.style.position = 'relative';\n addClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n else {\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n var openAnimation = {\n name: _this.animationSettings.effect + 'In',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n var zIndexElement = (_this.isModal) ? _this.element.parentElement : _this.element;\n if (_this.calculatezIndex) {\n _this.setzIndex(zIndexElement, true);\n setStyleAttribute(_this.element, { 'zIndex': _this.zIndex });\n if (_this.isModal) {\n _this.setOverlayZindex(_this.zIndex);\n }\n }\n // eslint-disable-next-line\n _this.animationSettings.effect === 'None' ? _this.popupObj.show() : _this.popupObj.show(openAnimation);\n _this.dialogOpen = true;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = true;\n _this.preventVisibility = true;\n _this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Closes the dialog if it is in visible state.\n *\n * @param { Event } event - specifies the event\n * @returns {void}\n */\n Dialog.prototype.hide = function (event) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (this.preventVisibility) {\n var eventArgs = isBlazor() ? {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n } : {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n target: this.target,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event,\n closedBy: this.dlgClosedBy\n };\n this.closeArgs = eventArgs;\n this.trigger('beforeClose', eventArgs, function (beforeCloseArgs) {\n if (!beforeCloseArgs.cancel) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.targetEle)) {\n removeClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n if (document.body.classList.contains(DLG_TARGET) &&\n document.body.classList.contains(SCROLL_DISABLED)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n var closeAnimation = {\n name: _this.animationSettings.effect + 'Out',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n // eslint-disable-next-line\n _this.animationSettings.effect === 'None' ? _this.popupObj.hide() : _this.popupObj.hide(closeAnimation);\n _this.dialogOpen = false;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = false;\n _this.preventVisibility = false;\n _this.isProtectedOnChange = prevOnChange;\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n }\n };\n // eslint-disable-next-line\n /**\n * Specifies to view the Full screen Dialog.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.fullScreen = function (args) {\n /* eslint-disable */\n var top = this.element.offsetTop;\n var left = this.element.offsetLeft;\n /* eslint-enable */\n if (args) {\n this.element.style.top = document.scrollingElement.scrollTop + 'px';\n addClass([this.element], FULLSCREEN);\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) ?\n (this.targetEle.offsetHeight) + 'px' : (window.innerHeight) + 'px';\n this.element.style.display = display;\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && !isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n }\n else {\n removeClass([this.element], FULLSCREEN);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n }\n return args;\n };\n /**\n * Returns the dialog button instances.\n * Based on that, you can dynamically change the button states.\n *\n * @param { number } index - Index of the button.\n * @returns {Button} - returns the button element\n */\n Dialog.prototype.getButtons = function (index) {\n if (!isNullOrUndefined(index)) {\n return this.btnObj[index];\n }\n return this.btnObj;\n };\n __decorate([\n Property('')\n ], Dialog.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"showCloseIcon\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"isModal\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"header\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enableResize\", void 0);\n __decorate([\n Property(['South-East'])\n ], Dialog.prototype, \"resizeHandles\", void 0);\n __decorate([\n Property('auto')\n ], Dialog.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"minHeight\", void 0);\n __decorate([\n Property('100%')\n ], Dialog.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"cssClass\", void 0);\n __decorate([\n Property(1000)\n ], Dialog.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], Dialog.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"allowDragging\", void 0);\n __decorate([\n Collection([{}], ButtonProps)\n ], Dialog.prototype, \"buttons\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"closeOnEscape\", void 0);\n __decorate([\n Complex({}, AnimationSettings)\n ], Dialog.prototype, \"animationSettings\", void 0);\n __decorate([\n Complex({ X: 'center', Y: 'center' }, PositionData)\n ], Dialog.prototype, \"position\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"overlayClick\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"destroyed\", void 0);\n Dialog = __decorate([\n NotifyPropertyChanges\n ], Dialog);\n return Dialog;\n}(Component));\nexport { Dialog };\n/**\n * Base for creating Alert and Confirmation Dialog through util method.\n */\n// eslint-disable-next-line\nexport var DialogUtility;\n(function (DialogUtility) {\n /**\n * An alert dialog box is used to display warning like messages to the users.\n * ```\n * Eg : DialogUtility.alert('Alert message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {AlertDialogArgs} args - specifies the string\n * @returns {Dialog} - returns the dialog element.\n */\n function alert(args) {\n // eslint-disable-next-line\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_ALERT });\n document.body.appendChild(dialogElement);\n var alertDialogObj;\n var okButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n alertDialogObj = createDialog({ content: args,\n position: { X: 'center', Y: 'top' },\n isModal: true, header: DLG_UTIL_DEFAULT_TITLE,\n buttons: okButtonModel }, dialogElement);\n }\n else {\n alertDialogObj = createDialog(alertOptions(args), dialogElement);\n }\n alertDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(alertDialogObj);\n }\n alertDialogObj.destroy();\n if (alertDialogObj.element.classList.contains('e-dlg-modal')) {\n alertDialogObj.element.parentElement.remove();\n alertDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n alertDialogObj.element.remove();\n }\n };\n return alertDialogObj;\n }\n DialogUtility.alert = alert;\n /**\n * A confirm dialog displays a specified message along with ‘OK’ and ‘Cancel’ button.\n * ```\n * Eg : DialogUtility.confirm('Confirm dialog message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {ConfirmDialogArgs} args - specifies the args\n * @returns {Dialog} - returns te element\n */\n function confirm(args) {\n // eslint-disable-next-line\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_CONFIRM });\n document.body.appendChild(dialogElement);\n var confirmDialogObj;\n var okCancelButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }, {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n confirmDialogObj = createDialog({ position: { X: 'center', Y: 'top' }, content: args, isModal: true,\n header: DLG_UTIL_DEFAULT_TITLE, buttons: okCancelButtonModel\n }, dialogElement);\n }\n else {\n confirmDialogObj = createDialog(confirmOptions(args), dialogElement);\n }\n confirmDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(confirmDialogObj);\n }\n confirmDialogObj.destroy();\n if (confirmDialogObj.element.classList.contains('e-dlg-modal')) {\n confirmDialogObj.element.parentElement.remove();\n confirmDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n confirmDialogObj.element.remove();\n }\n };\n return confirmDialogObj;\n }\n DialogUtility.confirm = confirm;\n // eslint-disable-next-line\n function createDialog(options, element) {\n var dialogObject = new Dialog(options);\n dialogObject.appendTo(element);\n return dialogObject;\n }\n // eslint-disable-next-line\n function alertOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setAlertButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function confirmOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setConfirmButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function formOptions(options, option) {\n options.header = !isNullOrUndefined(option.title) ? option.title : null;\n options.content = !isNullOrUndefined(option.content) ? option.content : '';\n options.isModal = !isNullOrUndefined(option.isModal) ? option.isModal : true;\n options.showCloseIcon = !isNullOrUndefined(option.showCloseIcon) ? option.showCloseIcon : false;\n options.allowDragging = !isNullOrUndefined(option.isDraggable) ? option.isDraggable : false;\n options.closeOnEscape = !isNullOrUndefined(option.closeOnEscape) ? option.closeOnEscape : false;\n options.position = !isNullOrUndefined(option.position) ? option.position : { X: 'center', Y: 'top' };\n options.animationSettings = !isNullOrUndefined(option.animationSettings) ? option.animationSettings :\n { effect: 'Fade', duration: 400, delay: 0 };\n options.cssClass = !isNullOrUndefined(option.cssClass) ? option.cssClass : '';\n options.zIndex = !isNullOrUndefined(option.zIndex) ? option.zIndex : 1000;\n options.open = !isNullOrUndefined(option.open) ? option.open : null;\n options.width = !isNullOrUndefined(option.width) ? option.width : 'auto';\n options.height = !isNullOrUndefined(option.height) ? option.height : 'auto';\n return options;\n }\n // eslint-disable-next-line\n function setAlertButtonModel(options, option) {\n var alertButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, alertButtonModel[0]);\n }\n else {\n options.buttons = alertButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function setConfirmButtonModel(options, option) {\n var okButtonModel = {\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n };\n var cancelButtonModel = {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n };\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, okButtonModel);\n }\n else {\n options.buttons[0] = okButtonModel;\n }\n if (!isNullOrUndefined(option.cancelButton)) {\n options.buttons[1] = formButtonModel(options.buttons[1], option.cancelButton, cancelButtonModel);\n }\n else {\n options.buttons[1] = cancelButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function formButtonModel(buttonModel, option, buttonPropModel) {\n var buttonProps = buttonPropModel;\n if (!isNullOrUndefined(option.text)) {\n buttonProps.buttonModel.content = option.text;\n }\n if (!isNullOrUndefined(option.icon)) {\n buttonProps.buttonModel.iconCss = option.icon;\n }\n if (!isNullOrUndefined(option.cssClass)) {\n buttonProps.buttonModel.cssClass = option.cssClass;\n }\n if (!isNullOrUndefined(option.click)) {\n buttonProps.click = option.click;\n }\n return buttonProps;\n }\n})(DialogUtility || (DialogUtility = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { setStyleAttribute, addClass, removeClass, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { calculatePosition, calculateRelativeBasedPosition } from '../common/position';\nimport { Animation, Property, Event, Component } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { flip, fit, isCollide } from '../common/collision';\n/**\n * Specifies the offset position values.\n */\nvar PositionData = /** @class */ (function (_super) {\n __extends(PositionData, _super);\n function PositionData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('left')\n ], PositionData.prototype, \"X\", void 0);\n __decorate([\n Property('top')\n ], PositionData.prototype, \"Y\", void 0);\n return PositionData;\n}(ChildProperty));\nexport { PositionData };\n// don't use space in classNames\nvar CLASSNAMES = {\n ROOT: 'e-popup',\n RTL: 'e-rtl',\n OPEN: 'e-popup-open',\n CLOSE: 'e-popup-close'\n};\n/**\n * Represents the Popup Component\n * ```html\n *
    \n *
    Popup Content
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Popup = /** @class */ (function (_super) {\n __extends(Popup, _super);\n function Popup(element, options) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PopupModel} newProp - specifies the new property\n * @param {PopupModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Popup.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'zIndex':\n setStyleAttribute(this.element, { 'zIndex': newProp.zIndex });\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'position':\n case 'relateTo':\n this.refreshPosition();\n break;\n case 'offsetX':\n // eslint-disable-next-line\n var x = newProp.offsetX - oldProp.offsetX;\n this.element.style.left = (parseInt(this.element.style.left, 10) + (x)).toString() + 'px';\n break;\n case 'offsetY':\n // eslint-disable-next-line\n var y = newProp.offsetY - oldProp.offsetY;\n this.element.style.top = (parseInt(this.element.style.top, 10) + (y)).toString() + 'px';\n break;\n case 'content':\n this.setContent();\n break;\n case 'actionOnScroll':\n if (newProp.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n else {\n this.unwireScrollEvents();\n }\n break;\n }\n }\n };\n /**\n * gets the Component module name.\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.getModuleName = function () {\n return 'popup';\n };\n /**\n * To resolve if any collision occurs.\n *\n * @returns {void}\n */\n Popup.prototype.resolveCollision = function () {\n this.checkCollision();\n };\n /**\n * gets the persisted state properties of the Component.\n *\n * @returns {void}\n */\n Popup.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the control.\n *\n * @returns {void}\n */\n Popup.prototype.destroy = function () {\n if (this.element.classList.contains('e-popup-open')) {\n this.unwireEvents();\n }\n this.element.classList.remove(CLASSNAMES.ROOT, CLASSNAMES.RTL, CLASSNAMES.OPEN, CLASSNAMES.CLOSE);\n this.content = null;\n this.relateTo = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.render = function () {\n this.element.classList.add(CLASSNAMES.ROOT);\n var styles = {};\n if (this.zIndex !== 1000) {\n styles.zIndex = this.zIndex;\n }\n if (this.width !== 'auto') {\n styles.width = formatUnit(this.width);\n }\n if (this.height !== 'auto') {\n styles.height = formatUnit(this.height);\n }\n setStyleAttribute(this.element, styles);\n this.fixedParent = false;\n this.setEnableRtl();\n this.setContent();\n };\n Popup.prototype.wireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.add(window, 'orientationchange', this.orientationOnChange, this);\n }\n if (this.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n };\n Popup.prototype.wireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollRefresh, this);\n }\n }\n };\n Popup.prototype.unwireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.remove(window, 'orientationchange', this.orientationOnChange);\n }\n if (this.actionOnScroll !== 'none') {\n this.unwireScrollEvents();\n }\n };\n Popup.prototype.unwireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollRefresh);\n }\n }\n };\n Popup.prototype.getRelateToElement = function () {\n var relateToElement = this.relateTo === '' || isNullOrUndefined(this.relateTo) ?\n document.body : this.relateTo;\n this.setProperties({ relateTo: relateToElement }, true);\n return ((typeof this.relateTo) === 'string') ?\n document.querySelector(this.relateTo) : this.relateTo;\n };\n Popup.prototype.scrollRefresh = function (e) {\n if (this.actionOnScroll === 'reposition') {\n if (!isNullOrUndefined(this.element) && !(this.element.offsetParent === e.target ||\n (this.element.offsetParent && this.element.offsetParent.tagName === 'BODY' &&\n e.target.parentElement == null))) {\n this.refreshPosition();\n }\n }\n else if (this.actionOnScroll === 'hide') {\n this.hide();\n }\n if (this.actionOnScroll !== 'none') {\n if (this.getRelateToElement()) {\n var targetVisible = this.isElementOnViewport(this.getRelateToElement(), e.target);\n if (!targetVisible && !this.targetInvisibleStatus) {\n this.trigger('targetExitViewport');\n this.targetInvisibleStatus = true;\n }\n else if (targetVisible) {\n this.targetInvisibleStatus = false;\n }\n }\n }\n };\n /**\n * This method is to get the element visibility on viewport when scroll\n * the page. This method will returns true even though 1 px of element\n * part is in visible.\n *\n * @param {HTMLElement} relateToElement - specifies the element\n * @param {HTMLElement} scrollElement - specifies the scroll element\n * @returns {boolean} - retruns the boolean\n */\n // eslint-disable-next-line\n Popup.prototype.isElementOnViewport = function (relateToElement, scrollElement) {\n var scrollParents = this.getScrollableParent(relateToElement);\n for (var parent_3 = 0; parent_3 < scrollParents.length; parent_3++) {\n if (this.isElementVisible(relateToElement, scrollParents[parent_3])) {\n continue;\n }\n else {\n return false;\n }\n }\n return true;\n };\n Popup.prototype.isElementVisible = function (relateToElement, scrollElement) {\n var rect = this.checkGetBoundingClientRect(relateToElement);\n if (!rect.height || !rect.width) {\n return false;\n }\n if (!isNullOrUndefined(this.checkGetBoundingClientRect(scrollElement))) {\n var parent_4 = scrollElement.getBoundingClientRect();\n return !(rect.bottom < parent_4.top) &&\n (!(rect.bottom > parent_4.bottom) &&\n (!(rect.right > parent_4.right) &&\n !(rect.left < parent_4.left)));\n }\n else {\n var win = window;\n var windowView = {\n top: win.scrollY,\n left: win.scrollX,\n right: win.scrollX + win.outerWidth,\n bottom: win.scrollY + win.outerHeight\n };\n var off = calculatePosition(relateToElement);\n var ele = {\n top: off.top,\n left: off.left,\n right: off.left + rect.width,\n bottom: off.top + rect.height\n };\n var elementView = {\n top: windowView.bottom - ele.top,\n left: windowView.right - ele.left,\n bottom: ele.bottom - windowView.top,\n right: ele.right - windowView.left\n };\n return elementView.top > 0\n && elementView.left > 0\n && elementView.right > 0\n && elementView.bottom > 0;\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.preRender = function () {\n //There is no event handler\n };\n Popup.prototype.setEnableRtl = function () {\n this.reposition();\n // eslint-disable-next-line\n this.enableRtl ? this.element.classList.add(CLASSNAMES.RTL) : this.element.classList.remove(CLASSNAMES.RTL);\n };\n Popup.prototype.setContent = function () {\n if (!isNullOrUndefined(this.content)) {\n this.element.innerHTML = '';\n if (typeof (this.content) === 'string') {\n this.element.textContent = this.content;\n }\n else {\n var relateToElem = this.getRelateToElement();\n // eslint-disable-next-line\n var props = this.content.props;\n if (!relateToElem.classList.contains('e-dropdown-btn') || isNullOrUndefined(props)) {\n this.element.appendChild(this.content);\n }\n }\n }\n };\n Popup.prototype.orientationOnChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.refreshPosition();\n }, 200);\n };\n // eslint-disable-next-line\n /**\n * Based on the `relative` element and `offset` values, `Popup` element position will refreshed.\n *\n * @returns {void}\n */\n Popup.prototype.refreshPosition = function (target, collision) {\n if (!isNullOrUndefined(target)) {\n this.checkFixedParent(target);\n }\n this.reposition();\n if (!collision) {\n this.checkCollision();\n }\n };\n Popup.prototype.reposition = function () {\n var pos;\n var position;\n var relateToElement = this.getRelateToElement();\n if (typeof this.position.X === 'number' && typeof this.position.Y === 'number') {\n pos = { left: this.position.X, top: this.position.Y };\n }\n else if ((typeof this.position.X === 'string' && typeof this.position.Y === 'number') ||\n (typeof this.position.X === 'number' && typeof this.position.Y === 'string')) {\n var parentDisplay = void 0;\n var display = this.element.style.display;\n this.element.style.display = 'block';\n if (this.element.classList.contains('e-dlg-modal')) {\n parentDisplay = this.element.parentElement.style.display;\n this.element.parentElement.style.display = 'block';\n }\n position = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n if (typeof this.position.X === 'string') {\n pos = { left: position.left, top: this.position.Y };\n }\n else {\n pos = { left: this.position.X, top: position.top };\n }\n this.element.style.display = display;\n if (this.element.classList.contains('e-dlg-modal')) {\n this.element.parentElement.style.display = parentDisplay;\n }\n }\n else if (relateToElement) {\n var height = this.element.clientHeight;\n var display = this.element.style.display;\n this.element.style.display = 'block';\n pos = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY, height);\n this.element.style.display = display;\n }\n else {\n pos = { left: 0, top: 0 };\n }\n if (!isNullOrUndefined(pos)) {\n this.element.style.left = pos.left + 'px';\n this.element.style.top = pos.top + 'px';\n }\n };\n Popup.prototype.checkGetBoundingClientRect = function (ele) {\n var eleRect;\n try {\n eleRect = ele.getBoundingClientRect();\n return eleRect;\n }\n catch (error) {\n return null;\n }\n };\n Popup.prototype.getAnchorPosition = function (anchorEle, ele, position, offsetX, offsetY, height) {\n if (height === void 0) { height = 0; }\n var eleRect = this.checkGetBoundingClientRect(ele);\n var anchorRect = this.checkGetBoundingClientRect(anchorEle);\n if (isNullOrUndefined(eleRect) || isNullOrUndefined(anchorRect)) {\n return null;\n }\n var anchor = anchorEle;\n var anchorPos = { left: 0, top: 0 };\n if (ele.offsetParent && ele.offsetParent.tagName === 'BODY' && anchorEle.tagName === 'BODY') {\n anchorPos = calculatePosition(anchorEle);\n }\n else {\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName !== 'BODY')) {\n ele = ele.parentElement;\n }\n anchorPos = calculateRelativeBasedPosition(anchor, ele);\n }\n switch (position.X) {\n default:\n case 'left':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth / 2 - eleRect.width / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width / 2 - eleRect.width / 2);\n }\n else {\n anchorPos.left += (anchorRect.width / 2);\n }\n break;\n case 'right':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth - eleRect.width);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width - eleRect.width);\n }\n else {\n anchorPos.left += (anchorRect.width);\n }\n break;\n }\n switch (position.Y) {\n default:\n case 'top':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight / 2 - eleRect.height / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height / 2 - eleRect.height / 2);\n }\n else {\n anchorPos.top += (anchorRect.height / 2);\n }\n break;\n case 'bottom':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight - eleRect.height);\n }\n else if (this.targetType === 'container' && !ele.classList.contains('e-dialog')) {\n anchorPos.top += (anchorRect.height - eleRect.height);\n }\n else if (this.targetType === 'container' && ele.classList.contains('e-dialog')) {\n anchorPos.top += (anchorRect.height - height);\n }\n else {\n anchorPos.top += (anchorRect.height);\n }\n break;\n }\n anchorPos.left += offsetX;\n anchorPos.top += offsetY;\n return anchorPos;\n };\n Popup.prototype.callFlip = function (param) {\n var relateToElement = this.getRelateToElement();\n flip(this.element, relateToElement, this.offsetX, this.offsetY, this.position.X, this.position.Y, this.viewPortElement, param, this.fixedParent);\n };\n Popup.prototype.callFit = function (param) {\n if (isCollide(this.element, this.viewPortElement).length !== 0) {\n if (isNullOrUndefined(this.viewPortElement)) {\n var data = fit(this.element, this.viewPortElement, param);\n if (param.X) {\n this.element.style.left = data.left + 'px';\n }\n if (param.Y) {\n this.element.style.top = data.top + 'px';\n }\n }\n else {\n var elementRect = this.checkGetBoundingClientRect(this.element);\n var viewPortRect = this.checkGetBoundingClientRect(this.viewPortElement);\n if (isNullOrUndefined(elementRect) || isNullOrUndefined(viewPortRect)) {\n return null;\n }\n if (param && param.Y === true) {\n if (viewPortRect.top > elementRect.top) {\n this.element.style.top = '0px';\n }\n else if (viewPortRect.bottom < elementRect.bottom) {\n this.element.style.top = parseInt(this.element.style.top, 10) - (elementRect.bottom - viewPortRect.bottom) + 'px';\n }\n }\n if (param && param.X === true) {\n if (viewPortRect.right < elementRect.right) {\n this.element.style.left = parseInt(this.element.style.left, 10) - (elementRect.right - viewPortRect.right) + 'px';\n }\n else if (viewPortRect.left > elementRect.left) {\n this.element.style.left = parseInt(this.element.style.left, 10) + (viewPortRect.left - elementRect.left) + 'px';\n }\n }\n }\n }\n };\n Popup.prototype.checkCollision = function () {\n var horz = this.collision.X;\n var vert = this.collision.Y;\n if (horz === 'none' && vert === 'none') {\n return;\n }\n if (horz === 'flip' && vert === 'flip') {\n this.callFlip({ X: true, Y: true });\n }\n else if (horz === 'fit' && vert === 'fit') {\n this.callFit({ X: true, Y: true });\n }\n else {\n if (horz === 'flip') {\n this.callFlip({ X: true, Y: false });\n }\n else if (vert === 'flip') {\n this.callFlip({ Y: true, X: false });\n }\n if (horz === 'fit') {\n this.callFit({ X: true, Y: false });\n }\n else if (vert === 'fit') {\n this.callFit({ X: false, Y: true });\n }\n }\n };\n /**\n * Shows the popup element from screen.\n *\n * @returns {void}\n * @param {AnimationModel} animationOptions - specifies the model\n * @param { HTMLElement } relativeElement - To calculate the zIndex value dynamically.\n */\n Popup.prototype.show = function (animationOptions, relativeElement) {\n var _this = this;\n var relateToElement = this.getRelateToElement();\n if (relateToElement.classList.contains('e-filemanager')) {\n this.fmDialogContainer = this.element.getElementsByClassName('e-file-select-wrap')[0];\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.fmDialogContainer) && Browser.isIos) {\n this.fmDialogContainer.style.display = 'block';\n }\n if (this.zIndex === 1000 || !isNullOrUndefined(relativeElement)) {\n var zIndexElement = (isNullOrUndefined(relativeElement)) ? this.element : relativeElement;\n this.zIndex = getZindexPartial(zIndexElement);\n setStyleAttribute(this.element, { 'zIndex': this.zIndex });\n }\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.showAnimation;\n if (this.collision.X !== 'none' || this.collision.Y !== 'none') {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.checkCollision();\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n }\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.begin = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.CLOSE);\n addClass([_this.element], CLASSNAMES.OPEN);\n }\n };\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n _this.trigger('open');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.trigger('open');\n }\n };\n /**\n * Hides the popup element from screen.\n *\n * @param {AnimationModel} animationOptions - To give the animation options.\n * @returns {void}\n */\n Popup.prototype.hide = function (animationOptions) {\n var _this = this;\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.hideAnimation;\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.OPEN);\n addClass([_this.element], CLASSNAMES.CLOSE);\n _this.trigger('close');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n this.trigger('close');\n }\n this.unwireEvents();\n };\n /**\n * Gets scrollable parent elements for the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n */\n Popup.prototype.getScrollableParent = function (element) {\n this.checkFixedParent(element);\n return getScrollableParent(element, this.fixedParent);\n };\n Popup.prototype.checkFixedParent = function (element) {\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (parentStyle.position === 'fixed' && !isNullOrUndefined(this.element) && this.element.offsetParent &&\n this.element.offsetParent.tagName === 'BODY' && getComputedStyle(this.element.offsetParent).overflow !== 'hidden') {\n this.element.style.top = window.scrollY > parseInt(this.element.style.top, 10) ?\n formatUnit(window.scrollY - parseInt(this.element.style.top, 10))\n : formatUnit(parseInt(this.element.style.top, 10) - window.scrollY);\n this.element.style.position = 'fixed';\n this.fixedParent = true;\n }\n parent = parent.parentElement;\n if (!isNullOrUndefined(this.element) && isNullOrUndefined(this.element.offsetParent) && parentStyle.position === 'fixed'\n && this.element.style.position === 'fixed') {\n this.fixedParent = true;\n }\n }\n };\n __decorate([\n Property('auto')\n ], Popup.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Popup.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"content\", void 0);\n __decorate([\n Property('container')\n ], Popup.prototype, \"targetType\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"viewPortElement\", void 0);\n __decorate([\n Property({ X: 'none', Y: 'none' })\n ], Popup.prototype, \"collision\", void 0);\n __decorate([\n Property('')\n ], Popup.prototype, \"relateTo\", void 0);\n __decorate([\n Complex({}, PositionData)\n ], Popup.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetY\", void 0);\n __decorate([\n Property(1000)\n ], Popup.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], Popup.prototype, \"enableRtl\", void 0);\n __decorate([\n Property('reposition')\n ], Popup.prototype, \"actionOnScroll\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"showAnimation\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"hideAnimation\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"targetExitViewport\", void 0);\n Popup = __decorate([\n NotifyPropertyChanges\n ], Popup);\n return Popup;\n}(Component));\nexport { Popup };\n/**\n * Gets scrollable parent elements for the given element.\n *\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n * @param {boolean} fixedParent - specifies the parent element\n * @private\n * @returns {void}\n */\nexport function getScrollableParent(element, fixedParent) {\n var eleStyle = getComputedStyle(element);\n var scrollParents = [];\n var overflowRegex = /(auto|scroll)/;\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (!(eleStyle.position === 'absolute' && parentStyle.position === 'static')\n && overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)) {\n scrollParents.push(parent);\n }\n parent = parent.parentElement;\n }\n if (!fixedParent) {\n scrollParents.push(document);\n }\n return scrollParents;\n}\n/**\n * Gets the maximum z-index of the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the maximum z-index of it.\n * @private\n */\nexport function getZindexPartial(element) {\n // upto body traversal\n var parent = element.parentElement;\n var parentZindex = [];\n while (parent) {\n if (parent.tagName !== 'BODY') {\n var index = document.defaultView.getComputedStyle(parent, null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(parent, null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n parentZindex.push(index);\n }\n parent = parent.parentElement;\n }\n else {\n break;\n }\n }\n var childrenZindex = [];\n for (var i = 0; i < document.body.children.length; i++) {\n if (!element.isEqualNode(document.body.children[i])) {\n var index = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n childrenZindex.push(index);\n }\n }\n }\n childrenZindex.push('999');\n var siblingsZindex = [];\n if (!isNullOrUndefined(element.parentElement) && element.parentElement.tagName !== 'BODY') {\n var childNodes = [].slice.call(element.parentElement.children);\n for (var i = 0; i < childNodes.length; i++) {\n if (!element.isEqualNode(childNodes[i])) {\n var index = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n siblingsZindex.push(index);\n }\n }\n }\n }\n var finalValue = parentZindex.concat(childrenZindex, siblingsZindex);\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, finalValue) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n/**\n * Gets the maximum z-index of the page.\n *\n * @returns {void}\n * @param { HTMLElement } tagName - Specify the tagName to get the maximum z-index of it.\n * @private\n */\nexport function getMaxZindex(tagName) {\n if (tagName === void 0) { tagName = ['*']; }\n var maxZindex = [];\n for (var i = 0; i < tagName.length; i++) {\n var elements = document.getElementsByTagName(tagName[i]);\n for (var i_1 = 0; i_1 < elements.length; i_1++) {\n var index = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n maxZindex.push(index);\n }\n }\n }\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, maxZindex) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n","import { isNullOrUndefined, classList, createElement, Browser } from '@syncfusion/ej2-base';\nvar globalTimeOut = {};\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_MAT3_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_FLUENT_WIDTH = 30;\nvar DEFT_BOOT_WIDTH = 30;\nvar DEFT_BOOT4_WIDTH = 36;\nvar DEFT_BOOT5_WIDTH = 36;\nvar CLS_SHOWSPIN = 'e-spin-show';\nvar CLS_HIDESPIN = 'e-spin-hide';\nvar CLS_MATERIALSPIN = 'e-spin-material';\nvar CLS_MATERIAL3SPIN = 'e-spin-material3';\nvar CLS_FABRICSPIN = 'e-spin-fabric';\nvar CLS_FLUENTSPIN = 'e-spin-fluent';\nvar CLS_TAILWINDSPIN = 'e-spin-tailwind';\nvar CLS_BOOTSPIN = 'e-spin-bootstrap';\nvar CLS_BOOT4SPIN = 'e-spin-bootstrap4';\nvar CLS_BOOT5SPIN = 'e-spin-bootstrap5';\nvar CLS_HIGHCONTRASTSPIN = 'e-spin-high-contrast';\nvar CLS_SPINWRAP = 'e-spinner-pane';\nvar CLS_SPININWRAP = 'e-spinner-inner';\nvar CLS_SPINCIRCLE = 'e-path-circle';\nvar CLS_SPINARC = 'e-path-arc';\nvar CLS_SPINLABEL = 'e-spin-label';\nvar CLS_SPINTEMPLATE = 'e-spin-template';\nvar spinTemplate = null;\nvar spinCSSClass = null;\n// eslint-disable-next-line\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : blazorSpinner({ action: \"Create\", options: {target: targetElement}, type: \"\" });\n * ```\n *\n * @param {string} action - specifies the string\n * @param {CreateArgs} options - specifies the args\n * @param {string} target - specifies the target\n * @param {string} type - specifes the type\n * @returns {void}\n * @private\n */\nexport function Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n /* eslint-disable */\n var element = document.querySelector(options.target);\n var args = { type: type, target: element, cssClass: options.cssClass,\n label: options.label, width: options.width };\n /* eslint-enable */\n createSpinner(args);\n break;\n case 'Show':\n showSpinner(document.querySelector(target));\n break;\n case 'Hide':\n hideSpinner(document.querySelector(target));\n break;\n case 'Set':\n // eslint-disable-next-line\n var setArgs = { cssClass: options.cssClass, type: type };\n setSpinner(setArgs);\n break;\n }\n}\n/**\n * Create a spinner for the specified target element.\n * ```\n * E.g : createSpinner({ target: targetElement, width: '34px', label: 'Loading..' });\n * ```\n *\n * @param {SpinnerArgs} args - specifies the args\n * @param {CreateElementArgs} internalCreateElement - specifis the element args\n * @returns {void}\n * @private\n */\nexport function createSpinner(args, internalCreateElement) {\n var _a;\n if (!args.target) {\n return;\n }\n var radius;\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n // eslint-disable-next-line\n var container = create_spinner_container(args.target, makeElement);\n if (!isNullOrUndefined(args.cssClass)) {\n var classNames = args.cssClass.split(' ').filter(function (className) { return className.trim() !== ''; });\n (_a = container.wrap.classList).add.apply(_a, classNames);\n }\n if (!isNullOrUndefined(args.template) || !isNullOrUndefined(spinTemplate)) {\n var template = !isNullOrUndefined(args.template) ? args.template : spinTemplate;\n container.wrap.classList.add(CLS_SPINTEMPLATE);\n replaceContent(container.wrap, template, spinCSSClass);\n }\n else {\n var theme = !isNullOrUndefined(args.type) ? args.type : getTheme(container.wrap);\n var width = !isNullOrUndefined(args.width) ? args.width : undefined;\n radius = calculateRadius(width, theme);\n setTheme(theme, container.wrap, radius, makeElement);\n if (!isNullOrUndefined(args.label)) {\n createLabel(container.inner_wrap, args.label, makeElement);\n }\n }\n container.wrap.classList.add(CLS_HIDESPIN);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} label - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction createLabel(container, label, makeElement) {\n var labelEle = makeElement('div', {});\n labelEle.classList.add(CLS_SPINLABEL);\n labelEle.innerHTML = label;\n container.appendChild(labelEle);\n return labelEle;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterialSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIALSPIN);\n mat_calculate_attributes(radius, container, 'Material', CLS_MATERIALSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterial3Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material3', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIAL3SPIN);\n mat_calculate_attributes(radius, container, 'Material3', CLS_MATERIAL3SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap4Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap4', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT4SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap4', CLS_BOOT4SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap5Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap5', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT5SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap5', CLS_BOOT5SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} uniqueID - specifies the id.\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\nfunction startMatAnimate(container, uniqueID, radius) {\n var globalObject = {};\n var timeOutVar = 0;\n globalTimeOut[\"\" + uniqueID].timeOut = 0;\n globalObject[\"\" + uniqueID] = globalVariables(uniqueID, radius, 0, 0);\n // eslint-disable-next-line\n var spinnerInfo = { uniqueID: uniqueID, container: container, globalInfo: globalObject, timeOutVar: timeOutVar };\n animateMaterial(spinnerInfo);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFabricSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fabric', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FABRICSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FABRICSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFluentSinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fluent', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FLUENTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FLUENTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createTailwindSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Tailwind', radius: radius };\n create_fabric_element(container, uniqueID, CLS_TAILWINDSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_TAILWINDSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createHighContrastSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'HighContrast', radius: radius };\n create_fabric_element(container, uniqueID, CLS_HIGHCONTRASTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_HIGHCONTRASTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @returns {string} - returns the string\n */\nfunction getTheme(container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n}\n/**\n *\n * @param {string} theme - specifies the theme\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction setTheme(theme, container, radius, makeElement) {\n var innerContainer = container.querySelector('.' + CLS_SPININWRAP);\n var svg = innerContainer.querySelector('svg');\n if (!isNullOrUndefined(svg)) {\n innerContainer.removeChild(svg);\n }\n switch (theme) {\n case 'Material':\n createMaterialSpinner(innerContainer, radius, makeElement);\n break;\n case 'Material3':\n createMaterial3Spinner(innerContainer, radius, makeElement);\n break;\n case 'Fabric':\n createFabricSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fluent':\n createFluentSinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap':\n createBootstrapSpinner(innerContainer, radius, makeElement);\n break;\n case 'HighContrast':\n createHighContrastSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap4':\n createBootstrap4Spinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap5':\n createBootstrap5Spinner(innerContainer, radius, makeElement);\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n createTailwindSpinner(innerContainer, radius, makeElement);\n break;\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrapSpinner(innerContainer, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap', radius: radius };\n create_bootstrap_element(innerContainer, uniqueID, makeElement);\n boot_calculate_attributes(innerContainer, radius);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the id\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_bootstrap_element(innerContainer, uniqueID, makeElement) {\n var svgBoot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var viewBoxValue = 64;\n var trans = 32;\n var defaultRadius = 2;\n svgBoot.setAttribute('id', uniqueID);\n svgBoot.setAttribute('class', CLS_BOOTSPIN);\n svgBoot.setAttribute('viewBox', '0 0 ' + viewBoxValue + ' ' + viewBoxValue);\n innerContainer.insertBefore(svgBoot, innerContainer.firstChild);\n for (var item = 0; item <= 7; item++) {\n var bootCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bootCircle.setAttribute('class', CLS_SPINCIRCLE + '_' + item);\n bootCircle.setAttribute('r', defaultRadius + '');\n bootCircle.setAttribute('transform', 'translate(' + trans + ',' + trans + ')');\n svgBoot.appendChild(bootCircle);\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction boot_calculate_attributes(innerContainer, radius) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var x = 0;\n var y = 0;\n var rad = 24;\n svg.style.width = svg.style.height = radius + 'px';\n var startArc = 90;\n for (var item = 0; item <= 7; item++) {\n var start = defineArcPoints(x, y, rad, startArc);\n var circleEle = svg.querySelector('.' + CLS_SPINCIRCLE + '_' + item);\n circleEle.setAttribute('cx', start.x + '');\n circleEle.setAttribute('cy', start.y + '');\n startArc = startArc >= 360 ? 0 : startArc;\n startArc = startArc + 45;\n }\n}\n/**\n *\n * @param {number} begin - specifies the number\n * @param {number} stop - specifirs the number\n * @returns {number[]} - returns the array of number\n */\nfunction generateSeries(begin, stop) {\n var series = [];\n var start = begin;\n var end = stop;\n // eslint-disable-next-line\n var increment = false, count = 1;\n formSeries(start);\n /**\n *\n * @param {number} i - specifies the number\n * @returns {void}\n */\n function formSeries(i) {\n series.push(i);\n if (i !== end || count === 1) {\n if (i <= start && i > 1 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n else if (i === 1) {\n i = 7;\n i = parseFloat((i + 0.2).toFixed(2));\n increment = true;\n }\n else if (i < 8 && increment) {\n i = parseFloat((i + 0.2).toFixed(2));\n if (i === 8) {\n increment = false;\n }\n }\n else if (i <= 8 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n ++count;\n formSeries(i);\n }\n }\n return series;\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @returns {void}\n */\nfunction animateBootstrap(innerContainer) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var id = svg.getAttribute('id');\n for (var i = 1; i <= 8; i++) {\n var circleEle = (innerContainer.getElementsByClassName('e-path-circle_' +\n (i === 8 ? 0 : i))[0]);\n rotation(circleEle, i, i, generateSeries(i, i), id);\n }\n /**\n *\n * @param {SVGCircleElement} circle - specifies the circl element\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {number} series - specifies the series\n * @param {string} id - specifies the id\n * @returns {void}\n */\n function rotation(circle, start, end, series, id) {\n var count = 0;\n boot_animate(start);\n // eslint-disable-next-line\n function boot_animate(radius) {\n if (globalTimeOut[\"\" + id].isAnimate) {\n ++count;\n circle.setAttribute('r', radius + '');\n if (count >= series.length) {\n count = 0;\n }\n // eslint-disable-next-line\n globalTimeOut[id].timeOut = setTimeout(boot_animate.bind(null, series[count]), 18);\n }\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} template - specifies the template\n * @param {string} cssClass - specifies the css class.\n * @returns {void}\n */\nfunction replaceContent(container, template, cssClass) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var inner = container.querySelector('.e-spinner-inner');\n inner.innerHTML = template;\n}\n/**\n *\n * @param {string} width - specifies the width\n * @param {string} theme - specifies the string\n * @returns {number} - returns the number\n */\nfunction calculateRadius(width, theme) {\n var defaultSize;\n switch (theme) {\n case 'Material':\n defaultSize = DEFT_MAT_WIDTH;\n break;\n case 'Material3':\n defaultSize = DEFT_MAT3_WIDTH;\n break;\n case 'Fabric':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Fluent':\n defaultSize = DEFT_FLUENT_WIDTH;\n break;\n case 'Bootstrap4':\n defaultSize = DEFT_BOOT4_WIDTH;\n break;\n case 'Bootstrap5':\n defaultSize = DEFT_BOOT5_WIDTH;\n break;\n default:\n defaultSize = DEFT_BOOT_WIDTH;\n }\n width = width ? parseFloat(width + '') : defaultSize;\n return theme === 'Bootstrap' ? width : width / 2;\n}\n/**\n *\n * @param {string} id - specifies the id\n * @param {number} radius - specifies the radius\n * @param {number} count - specifies the number count\n * @param {number} previousId - specifies the previous id\n * @returns {GlobalVariables} - returns the variables\n */\nfunction globalVariables(id, radius, count, previousId) {\n return {\n radius: radius,\n count: count,\n previousId: previousId\n };\n}\n/**\n * @returns {string} - returns the string\n */\n// eslint-disable-next-line\nfunction random_generator() {\n var random = '';\n var combine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (var i = 0; i < 5; i++) {\n random += combine.charAt(Math.floor(Math.random() * combine.length));\n }\n return random;\n}\n/**\n *\n * @param {HTMLElement} innerCon - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {string} themeClass - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_fabric_element(innerCon, uniqueID, themeClass, makeElement) {\n var svgFabric = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgFabric.setAttribute('id', uniqueID);\n svgFabric.setAttribute('class', themeClass);\n var fabricCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n var fabricCircleArc = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCircleArc.setAttribute('class', CLS_SPINARC);\n innerCon.insertBefore(svgFabric, innerCon.firstChild);\n svgFabric.appendChild(fabricCirclePath);\n svgFabric.appendChild(fabricCircleArc);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {createElementParams} makeElement - specifies the element\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_material_element(innerContainer, uniqueID, makeElement, cls) {\n var svgMaterial = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var matCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n svgMaterial.setAttribute('class', cls);\n svgMaterial.setAttribute('id', uniqueID);\n matCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n innerContainer.insertBefore(svgMaterial, innerContainer.firstChild);\n svgMaterial.appendChild(matCirclePath);\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_spinner_container(target, makeElement) {\n var spinnerContainer = makeElement('div', {});\n var spinnerInnerContainer = makeElement('div', {});\n spinnerContainer.classList.add(CLS_SPINWRAP);\n spinnerInnerContainer.classList.add(CLS_SPININWRAP);\n target.appendChild(spinnerContainer);\n spinnerContainer.appendChild(spinnerInnerContainer);\n // eslint-disable-next-line\n return { wrap: spinnerContainer, inner_wrap: spinnerInnerContainer };\n}\n/**\n *\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner\n * @returns {void}\n */\nfunction animateMaterial(spinnerInfo) {\n var start = 1;\n var end = 149;\n var duration = 1333;\n var max = 75;\n createCircle(start, end, easeAnimation, duration, spinnerInfo.globalInfo[spinnerInfo.uniqueID].count, max, spinnerInfo);\n spinnerInfo.globalInfo[spinnerInfo.uniqueID].count = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].count % 4;\n}\n/**\n *\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {Function} easing - specifies the function\n * @param {number} duration - specifies the duration\n * @param {number} count - specifies the count\n * @param {number} max - specifies the max number\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner info\n * @returns {void}\n */\nfunction createCircle(start, end, easing, duration, count, max, spinnerInfo) {\n var id = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId;\n var startTime = new Date().getTime();\n var change = end - start;\n var diameter = getSize((spinnerInfo.globalInfo[spinnerInfo.uniqueID].radius * 2) + '');\n var strokeSize = getStrokeSize(diameter);\n var rotate = -90 * (spinnerInfo.globalInfo[spinnerInfo.uniqueID].count || 0);\n mat_animation(spinnerInfo);\n // eslint-disable-next-line\n function mat_animation(spinnerInfo) {\n var currentTime = Math.max(0, Math.min(new Date().getTime() - startTime, duration));\n updatePath(easing(currentTime, start, change, duration), spinnerInfo.container);\n if (id === spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId && currentTime < duration) {\n // eslint-disable-next-line\n globalTimeOut[spinnerInfo.uniqueID].timeOut = setTimeout(mat_animation.bind(null, spinnerInfo), 1);\n }\n else {\n animateMaterial(spinnerInfo);\n }\n }\n /**\n *\n * @param {number} value - specifies the number value\n * @param {HTMLElement} container - specifies the container\n * @returns {void}\n */\n function updatePath(value, container) {\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) || !isNullOrUndefined(container.querySelector('svg.e-spin-material3'))) {\n var svg = void 0;\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material');\n }\n else if (!isNullOrUndefined(container.querySelector('svg.e-spin-material3')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material3').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material3');\n }\n if (!isNullOrUndefined(svg)) {\n var path = svg.querySelector('path.e-path-circle');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, value, max) + '');\n path.setAttribute('transform', 'rotate(' + (rotate) + ' ' + diameter / 2 + ' ' + diameter / 2 + ')');\n }\n }\n }\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} container - specifies the element\n * @param {string} type - specifies the string type\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction mat_calculate_attributes(radius, container, type, cls) {\n var diameter = radius * 2;\n var svg = container.querySelector('svg.' + cls);\n var path = svg.querySelector('path.e-path-circle');\n var strokeSize = getStrokeSize(diameter);\n var transformOrigin = (diameter / 2) + 'px';\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.width = svg.style.height = diameter + 'px';\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n path.setAttribute('d', drawArc(diameter, strokeSize));\n if (type === 'Material' || type === 'Material3') {\n path.setAttribute('stroke-width', strokeSize + '');\n path.setAttribute('stroke-dasharray', ((diameter - strokeSize) * Math.PI * 0.75) + '');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, 1, 75) + '');\n }\n}\n/**\n *\n * @param {string} value - specifies the value\n * @returns {number} - returns the number\n */\nfunction getSize(value) {\n var parsed = parseFloat(value);\n return parsed;\n}\n/**\n *\n * @param {number} diameter - specifies the diameter\n * @param {number} strokeSize - specifies the size\n * @returns {string} - returns the string\n */\nfunction drawArc(diameter, strokeSize) {\n var radius = diameter / 2;\n var offset = strokeSize / 2;\n return 'M' + radius + ',' + offset\n + 'A' + (radius - offset) + ',' + (radius - offset) + ' 0 1 1 ' + offset + ',' + radius;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @returns {number} - returns the number\n */\nfunction getStrokeSize(diameter) {\n return 10 / 100 * diameter;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @param {number} strokeSize - specifies the stroke size\n * @param {number} value - specifies the value\n * @param {number} max - specifies the max number\n * @returns {number} - returns the number\n */\nfunction getDashOffset(diameter, strokeSize, value, max) {\n return (diameter - strokeSize) * Math.PI * ((3 * (max) / 100) - (value / 100));\n}\n/**\n *\n * @param {number} current - specifies the number\n * @param {number} start - specifies the stroke size\n * @param {number} change - specifies the value\n * @param {number} duration - specifies the max number\n * @returns {number} - returns the number\n */\nfunction easeAnimation(current, start, change, duration) {\n var timestamp = (current /= duration) * current;\n var timecount = timestamp * current;\n return start + change * (6 * timecount * timestamp + -15 * timestamp * timestamp + 10 * timecount);\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} innerConainer - specifies the element\n * @param {string} trgClass - specifies the class\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction fb_calculate_attributes(radius, innerConainer, trgClass) {\n var centerX = radius;\n var centerY = radius;\n var diameter = radius * 2;\n // eslint-disable-next-line\n var startArc = 315, endArc = 45;\n var svg = innerConainer.querySelector('.' + trgClass);\n var circle = svg.querySelector('.e-path-circle');\n var path = svg.querySelector('.e-path-arc');\n var transformOrigin = (diameter / 2) + 'px';\n circle.setAttribute('d', defineCircle(centerX, centerY, radius));\n path.setAttribute('d', defineArc(centerX, centerY, radius, startArc, endArc));\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n svg.style.width = svg.style.height = diameter + 'px';\n}\n/**\n *\n * @param {number} centerX - specifies the number\n * @param {number} centerY - specifies the stroke size\n * @param {number} radius - specifies the value\n * @param {number} angle - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArcPoints(centerX, centerY, radius, angle) {\n var radians = (angle - 90) * Math.PI / 180.0;\n return {\n x: centerX + (radius * Math.cos(radians)),\n y: centerY + (radius * Math.sin(radians))\n };\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the radius\n * @param {number} startArc - specifies the value\n * @param {number} endArc - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArc(x, y, radius, startArc, endArc) {\n var start = defineArcPoints(x, y, radius, endArc);\n var end = defineArcPoints(x, y, radius, startArc);\n var d = [\n 'M', start.x, start.y,\n 'A', radius, radius, 0, 0, 0, end.x, end.y\n ].join(' ');\n return d;\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the value\n * @returns {string} - returns the string\n */\nfunction defineCircle(x, y, radius) {\n var d = [\n 'M', x, y,\n 'm', -radius, 0,\n 'a', radius, radius, 0, 1, 0, radius * 2, 0,\n 'a', radius, radius, 0, 1, 0, -radius * 2, 0\n ].join(' ');\n return d;\n}\n/**\n * Function to show the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function showSpinner(container) {\n showHideSpinner(container, false);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {boolean} isHide - specifies the boolean\n * @returns {void}\n */\nfunction showHideSpinner(container, isHide) {\n var spinnerWrap;\n if (container) {\n if (container.classList.contains(CLS_SPINWRAP)) {\n spinnerWrap = container;\n }\n else {\n var spinWrapCollection = container.querySelectorAll('.' + CLS_SPINWRAP);\n if (Browser.isIE) {\n for (var i = 0; i < spinWrapCollection.length; i++) {\n // eslint-disable-next-line\n if (spinWrapCollection[i].parentElement && spinWrapCollection[i].parentElement === container) {\n // eslint-disable-next-line\n spinnerWrap = spinWrapCollection[i];\n break;\n }\n }\n }\n else {\n spinnerWrap = Array.from(spinWrapCollection).find(function (wrap) { return wrap.parentElement === container; }) || null;\n }\n }\n }\n if (container && spinnerWrap) {\n var inner = spinnerWrap.querySelector('.' + CLS_SPININWRAP);\n var spinCheck = void 0;\n // eslint-disable-next-line\n spinCheck = isHide ? !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_HIDESPIN) :\n !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_SHOWSPIN);\n if (spinCheck) {\n var svgEle = spinnerWrap.querySelector('svg');\n if (isNullOrUndefined(svgEle)) {\n return;\n }\n var id = svgEle.getAttribute('id');\n globalTimeOut[\"\" + id].isAnimate = !isHide;\n switch (globalTimeOut[\"\" + id].type) {\n case 'Material':\n case 'Material3':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : startMatAnimate(inner, id, globalTimeOut[id].radius);\n break;\n case 'Bootstrap':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : animateBootstrap(inner);\n break;\n }\n }\n // eslint-disable-next-line\n isHide ? classList(spinnerWrap, [CLS_HIDESPIN], [CLS_SHOWSPIN]) : classList(spinnerWrap, [CLS_SHOWSPIN], [CLS_HIDESPIN]);\n container = null;\n }\n}\n/**\n * Function to hide the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function hideSpinner(container) {\n showHideSpinner(container, true);\n container = null;\n}\n// eslint-disable-next-line\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : setSpinner({ cssClass: 'custom-css'; type: 'Material' });\n * ```\n *\n * @param {SetSpinnerArgs} args - specifies the args\n * @param {createElementParams} internalCreateElement - specifies the element params\n * @returns {void}\n * @private\n */\nexport function setSpinner(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.template !== undefined) {\n spinTemplate = args.template;\n if (args.template !== undefined) {\n spinCSSClass = args.cssClass;\n }\n }\n var container = document.querySelectorAll('.' + CLS_SPINWRAP);\n for (var index = 0; index < container.length; index++) {\n ensureTemplate(args.template, container[index], args.type, args.cssClass, makeElement);\n }\n}\n/**\n *\n * @param {string} template - specifies the string\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction ensureTemplate(template, container, theme, cssClass, makeEle) {\n if (isNullOrUndefined(template) && !container.classList.contains(CLS_SPINTEMPLATE)) {\n replaceTheme(container, theme, cssClass, makeEle);\n if (container.classList.contains(CLS_SHOWSPIN)) {\n container.classList.remove(CLS_SHOWSPIN);\n showSpinner(container);\n }\n else {\n container.classList.remove(CLS_HIDESPIN);\n hideSpinner(container);\n }\n }\n else {\n spinTemplate = template;\n if (!isNullOrUndefined(cssClass)) {\n spinCSSClass = cssClass;\n }\n if (!isNullOrUndefined(spinTemplate)) {\n replaceContent(container, spinTemplate, spinCSSClass);\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction replaceTheme(container, theme, cssClass, makeEle) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var svgElement = container.querySelector('svg');\n if (!isNullOrUndefined(svgElement)) {\n var radius = theme === 'Bootstrap' ? parseFloat(svgElement.style.height) : parseFloat(svgElement.style.height) / 2;\n var classNames = svgElement.getAttribute('class');\n var svgClassList = classNames.split(/\\s/);\n if (svgClassList.indexOf('e-spin-material') >= 0) {\n var id = svgElement.getAttribute('id');\n clearTimeout(globalTimeOut[\"\" + id].timeOut);\n }\n setTheme(theme, container, radius, makeEle);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, Event, append, compile } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit, select, selectAll } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '../popup/popup';\nimport { calculatePosition } from '../common/position';\nimport { isCollide, fit } from '../common/collision';\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT = 'e-tooltip';\nvar RTL = 'e-rtl';\nvar DEVICE = 'e-bigger';\nvar ICON = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar POPUP_CONTAINER = 'e-tooltip-popup-container';\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation.prototype, \"open\", void 0);\n __decorate([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n *
    Show Tooltip
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /* eslint-enable */\n /**\n * Constructor for creating the Tooltip Component\n *\n * @param {TooltipModel} options - specifies the options for the constructor\n * @param {string| HTMLElement} element - specifies the element for the constructor\n *\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseMoveEvent = null;\n _this.mouseMoveTarget = null;\n _this.containerElement = null;\n _this.isBodyContainer = true;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n addClass([this.element], ROOT);\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n }\n else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n var tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getScalingFactor = function () {\n var eleRect = this.tooltipEle.getBoundingClientRect();\n var xScalingFactor = (Math.round(eleRect.width) / this.tooltipEle.offsetWidth) || 1;\n var yScalingFactor = (Math.round(eleRect.height) / this.tooltipEle.offsetHeight) || 1;\n return {\n x: isFinite(xScalingFactor) ? xScalingFactor : 1,\n y: isFinite(yScalingFactor) ? yScalingFactor : 1\n };\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var parentWithZoomStyle = this.element.closest('[style*=\"zoom\"]');\n if (parentWithZoomStyle) {\n if (!parentWithZoomStyle.contains(this.tooltipEle)) {\n this.tooltipEle.style.zoom = getComputedStyle(parentWithZoomStyle).zoom;\n }\n }\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n var scalingFactors = this.getScalingFactor();\n var offsetPos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var collisionPosition = this.calculateElementPosition(pos, offsetPos);\n var collisionLeft = collisionPosition[0];\n var collisionTop = collisionPosition[1];\n var elePos = this.collisionFlipFit(target, collisionLeft, collisionTop);\n elePos.left = elePos.left / scalingFactors.x;\n elePos.top = elePos.top / scalingFactors.y;\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.windowResize = function () {\n this.reposition(this.findTarget());\n };\n Tooltip.prototype.reposition = function (target) {\n if (this.popupObj && target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n }\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.closePopupHandler = function () {\n if (this.isReact && !(this.opensOn === 'Click' && typeof (this.content) === 'function')) {\n this.clearTemplate(['content']);\n }\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.calculateTooltipOffset = function (position, xScalingFactor, yScalingFactor) {\n if (xScalingFactor === void 0) { xScalingFactor = 1; }\n if (yScalingFactor === void 0) { yScalingFactor = 1; }\n var pos = { top: 0, left: 0 };\n var tipWidth, tipHeight, tooltipEleWidth, tooltipEleHeight, arrowEle;\n var tipAdjust, tipHeightAdjust, tipWidthAdjust;\n if (xScalingFactor != 1 || yScalingFactor != 1) {\n var tooltipEleRect = this.tooltipEle.getBoundingClientRect();\n var arrowEleRect = void 0;\n tooltipEleWidth = Math.round(tooltipEleRect.width);\n tooltipEleHeight = Math.round(tooltipEleRect.height);\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (arrowEle) {\n arrowEleRect = arrowEle.getBoundingClientRect();\n }\n tipWidth = arrowEle ? Math.round(arrowEleRect.width) : 0;\n tipHeight = arrowEle ? Math.round(arrowEleRect.height) : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (tooltipEleHeight - (this.tooltipEle.clientHeight * yScalingFactor));\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (tooltipEleWidth - (this.tooltipEle.clientWidth * xScalingFactor));\n }\n else {\n tooltipEleWidth = this.tooltipEle.offsetWidth;\n tooltipEleHeight = this.tooltipEle.offsetHeight;\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n }\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = selectAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER, this.tooltipEle);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n if (this.showTipPointer === false) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else if ((tipPosExclude) && (this.tipPointerPosition === 'End' || this.tipPointerPosition === 'Start')) {\n leftValue = (this.tipPointerPosition === 'End') ? ((target.offsetWidth + ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2)) - (tipWidth / 2)) - POINTER_ADJUST + 'px'\n : ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2) - (tipWidth / 2) + POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var tooltipContent = select('.' + CONTENT, this.tooltipEle);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string') {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n var tempFunction = compile(this.content);\n var tempArr = tempFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n if (this.enableHtmlParse) {\n var nodeList = tempArr.length;\n for (var i = 0; i < nodeList; i++) {\n tooltipContent[append(tempArr, tooltipContent), 'innerHTML'] = this.content;\n }\n }\n else {\n tooltipContent['textContent'] = this.content;\n }\n }\n }\n else {\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n return;\n }\n var tipClose = this.createElement('div', { className: ICON + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDataTooltipId = function (target, id) {\n attributes(target, { 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDataTooltipId = function (target) {\n target.removeAttribute('data-tooltip-id');\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function (e) {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || (target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0)) {\n return;\n }\n var targetList = [].slice.call(selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.mouseMoveBeforeOpen = function (e) {\n this.mouseMoveEvent = e;\n };\n Tooltip.prototype.mouseMoveBeforeRemove = function () {\n if (this.mouseMoveTarget) {\n EventHandler.remove(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen);\n }\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n if (this.openDelay && this.mouseTrail) {\n this.mouseMoveBeforeRemove();\n this.mouseMoveTarget = target;\n EventHandler.add(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen, this);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n if (Object.keys(this.htmlAttributes).length !== 0) {\n for (var attr in this.htmlAttributes) {\n if (attr === \"class\") {\n this.tooltipEle.classList.add(this.htmlAttributes[\"\" + attr]);\n }\n else {\n this.tooltipEle.setAttribute(attr, this.htmlAttributes[\"\" + attr]);\n }\n }\n }\n this.tooltipBeforeRender(target, this);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n else {\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDataTooltipId(target, this.ctrlId + '_content');\n this.renderContent(target);\n PopupAnimation.stop(this.tooltipEle);\n this.reposition(target);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n }\n }\n };\n Tooltip.prototype.appendContainer = function (ctrlObj) {\n if (typeof this.container == 'string') {\n if (this.container === 'body') {\n this.containerElement = document.body;\n }\n else {\n this.isBodyContainer = false;\n this.containerElement = select(this.container, document);\n }\n }\n else if (this.container instanceof HTMLElement) {\n this.containerElement = this.container;\n this.isBodyContainer = this.containerElement.tagName === 'BODY';\n }\n if (!this.isBodyContainer) {\n addClass([this.containerElement], POPUP_CONTAINER);\n }\n this.containerElement.appendChild(ctrlObj.tooltipEle);\n };\n Tooltip.prototype.tooltipBeforeRender = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n this.appendContainer(ctrlObj);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDataTooltipId(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n PopupAnimation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.tooltipAfterRender = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n this.restoreElement(target);\n }\n else {\n var openAnimation_1 = {\n name: showAnimation.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n if (_this.mouseMoveEvent && _this.mouseTrail) {\n _this.onMouseMove(_this.mouseMoveEvent);\n }\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // eslint-disable-next-line\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n && typeof tooltip.viewContainerRef !== 'string';\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.calculateElementPosition = function (pos, offsetPos) {\n return [this.isBodyContainer ? pos.left + offsetPos.left :\n (pos.left - this.containerElement.offsetLeft) + offsetPos.left + window.pageXOffset + this.containerElement.scrollLeft,\n this.isBodyContainer ? pos.top + offsetPos.top :\n (pos.top - this.containerElement.offsetTop) + offsetPos.top + window.pageYOffset + this.containerElement.scrollTop];\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (this.tooltipEventArgs.cancel) {\n newpos = this.position;\n }\n else {\n var elePosVertical = elePos.vertical;\n var elePosHorizontal = elePos.horizontal;\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePosHorizontal, elePosVertical, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n var scalingFactors = this.getScalingFactor();\n var offsetPos = this.calculateTooltipOffset(newpos, scalingFactors.x, scalingFactors.y);\n offsetPos.top -= this.getOffSetPosition('TopBottom', newpos, this.offsetY);\n offsetPos.left -= this.getOffSetPosition('RightLeft', newpos, this.offsetX);\n elePos.position = newpos;\n var elePosition = this.calculateElementPosition(pos, offsetPos);\n elePos.left = elePosition[0];\n elePos.top = elePosition[1];\n }\n else {\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n }\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var position = this.isBodyContainer ?\n fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: this.windowCollision }, eleOffset) : eleOffset;\n this.tooltipEle.style.display = 'block';\n if (this.showTipPointer && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n var arrowleft = parseInt(arrowEle.style.left, 10) - (position.left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = position.left;\n eleOffset.top = position.top;\n return eleOffset;\n };\n Tooltip.prototype.getOffSetPosition = function (positionString, newPos, offsetType) {\n return ((positionString.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n (positionString.indexOf(newPos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * offsetType) : 0;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.mouseMoveBeforeRemove();\n _this.popupHide(hideAnimation, target);\n }\n else {\n _this.isHidden = false;\n }\n });\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target) {\n if (target) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: hideAnimation.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDataTooltipId(target);\n };\n Tooltip.prototype.clear = function () {\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function (e) {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function (e) {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n PopupAnimation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var scalingFactors = this.getScalingFactor();\n var pos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position, scalingFactors.x, scalingFactors.y);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (!isNullOrUndefined(this.targetsList) && !isNullOrUndefined(this.target)) {\n var target = [].slice.call(selectAll(this.target, this.element));\n if (target.length !== this.targetsList.length) {\n this.unwireEvents(this.opensOn);\n this.wireEvents(this.opensOn);\n }\n }\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle && !this.isSticky) {\n if (!(closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT))) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n *\n * @hidden\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n if (this.element.nodeName !== \"BODY\") {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n else {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n this.targetsList = targetList;\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n }\n else {\n EventHandler.add(this.element, 'focus', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'focusin') {\n EventHandler.add(target, 'focusout', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n *\n * @hidden\n *\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n if (this.element.nodeName === 'BODY') {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n else {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n }\n else {\n EventHandler.remove(this.element, 'focus', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n EventHandler.remove(target, 'focusout', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n return target;\n };\n /**\n * Core method to return the component name.\n *\n * @private\n *\n * @returns {string} - this method returns module name.\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @private\n *\n * @returns {string} - this method returns persisted data.\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @private\n *\n * @param {TooltipModel} newProp - this param gives new property values to the method\n * @param {TooltipModel} oldProp - this param gives old property values to the method\n * @returns {void}\n *\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n this.renderContent();\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL);\n }\n else {\n removeClass([this.tooltipEle], RTL);\n }\n }\n break;\n case 'container':\n if (!isNullOrUndefined(this.containerElement)) {\n removeClass([this.containerElement], POPUP_CONTAINER);\n }\n this.container = newProp.container;\n if (this.tooltipEle && targetElement) {\n this.appendContainer(this);\n this.reposition(targetElement);\n }\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n *\n * @param {HTMLElement} element - Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param {TooltipAnimationSettings} animation - Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n *\n * @param {TooltipAnimationSettings} animation - Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n *\n * @param {HTMLElement} target - Target element where the Tooltip content or position needs to be refreshed.\n * @returns {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n };\n /**\n * It is used to destroy the Tooltip component.\n * @method destroy\n * @returns {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n removeClass([this.element], ROOT);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n var currentTarget = selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', this.element);\n for (var _i = 0, currentTarget_1 = currentTarget; _i < currentTarget_1.length; _i++) {\n var target = currentTarget_1[_i];\n this.restoreElement(target);\n }\n };\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property('body')\n ], Tooltip.prototype, \"container\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * React Component Base\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { extend, isNullOrUndefined, setValue, getValue, isObject } from '@syncfusion/ej2-base';\nvar defaulthtmlkeys = ['alt', 'className', 'disabled', 'form', 'id',\n 'readOnly', 'style', 'tabIndex', 'title', 'type', 'name',\n 'onClick', 'onFocus', 'onBlur'];\nvar delayUpdate = ['accordion', 'tab', 'splitter'];\nvar reactUid = 0;\nvar isColEName = new RegExp('\\]');\n// tslint:disable\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar ComponentBase = /** @class */ (function (_super) {\n __extends(ComponentBase, _super);\n function ComponentBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.mountingState = false;\n _this.attrKeys = [];\n _this.cachedTimeOut = 0;\n _this.isAppendCalled = false;\n _this.initRenderCalled = false;\n _this.isReactForeceUpdate = false;\n _this.isReact = true;\n _this.isshouldComponentUpdateCalled = false;\n _this.isCreated = false;\n return _this;\n }\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentWillMount\n // tslint:disable-next-line:no-any\n ComponentBase.prototype.componentDidMount = function () {\n this.refreshChild(true);\n this.canDelayUpdate = delayUpdate.indexOf(this.getModuleName()) !== -1;\n // Used timeout to resolve template binding\n // Reference link: https://github.com/facebook/react/issues/10309#issuecomment-318433235\n // tslint:disable-next-line:no-any\n this.renderReactComponent();\n if (this.portals && this.portals.length) {\n this.mountingState = true;\n this.renderReactTemplates();\n this.mountingState = false;\n }\n };\n ComponentBase.prototype.componentDidUpdate = function (prev) {\n if (!this.isshouldComponentUpdateCalled && this.initRenderCalled && !this.isReactForeceUpdate) {\n if (prev !== this.props) {\n this.isshouldComponentUpdateCalled = true;\n this.refreshProperties(this.props, this.props);\n }\n }\n };\n ComponentBase.prototype.renderReactComponent = function () {\n var ele = this.reactElement;\n if (ele && !this.isAppendCalled) {\n this.isAppendCalled = true;\n this.appendTo(ele);\n }\n };\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentwillreceiveprops\n // tslint:disable-next-line:no-any\n /**\n * @private\n */\n ComponentBase.prototype.shouldComponentUpdate = function (nextProps) {\n this.isshouldComponentUpdateCalled = true;\n if (!this.initRenderCalled) {\n this.updateProperties(nextProps, true);\n return true;\n }\n if (!this.isAppendCalled) {\n clearTimeout(this.cachedTimeOut);\n this.isAppendCalled = true;\n this.appendTo(this.reactElement);\n }\n this.updateProperties(nextProps);\n return true;\n };\n /**\n * @private\n */\n ComponentBase.prototype.updateProperties = function (nextProps, silent) {\n var _this = this;\n var dProps = extend({}, nextProps);\n var keys = Object.keys(nextProps);\n // The statelessTemplates props value is taken from sample level property or default component property.\n var statelessTemplates = !isNullOrUndefined(this.props['statelessTemplates']) ? this.props['statelessTemplates'] :\n (!isNullOrUndefined(this['statelessTemplateProps']) ? this['statelessTemplateProps'] : []);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var propkey = keys_1[_i];\n var isClassName = propkey === 'className';\n if (propkey === 'children') {\n continue;\n }\n if (!isClassName && !isNullOrUndefined(this.htmlattributes[\"\" + propkey]) &&\n this.htmlattributes[\"\" + propkey] !== dProps[\"\" + propkey]) {\n this.htmlattributes[\"\" + propkey] = dProps[\"\" + propkey];\n }\n if (this.compareValues(this.props[\"\" + propkey], nextProps[\"\" + propkey])) {\n delete dProps[\"\" + propkey];\n }\n else if (this.attrKeys.indexOf(propkey) !== -1) {\n if (isClassName) {\n this.clsName = true;\n var propsClsName = this.props[\"\" + propkey].split(' ');\n for (var i = 0; i < propsClsName.length; i++) {\n this.element.classList.remove(propsClsName[parseInt(i.toString(), 10)]);\n }\n var dpropsClsName = dProps[\"\" + propkey].split(' ');\n for (var j = 0; j < dpropsClsName.length; j++) {\n this.element.classList.add(dpropsClsName[parseInt(j.toString(), 10)]);\n }\n }\n else if (propkey !== 'disabled' && !this.properties.hasOwnProperty(propkey)) {\n delete dProps[\"\" + propkey];\n }\n }\n else if (propkey === 'value' && nextProps[\"\" + propkey] === this[\"\" + propkey]) {\n delete dProps[\"\" + propkey];\n }\n else if (statelessTemplates.indexOf(propkey) > -1 && ((propkey === 'content' && typeof dProps[\"\" + propkey] === 'function') || (nextProps[\"\" + propkey].toString() === this[\"\" + propkey].toString()))) {\n delete dProps[\"\" + propkey];\n }\n }\n if (dProps['children']) {\n delete dProps['children'];\n }\n // tslint:disable-next-line:no-any\n if (this.initRenderCalled && (this.canDelayUpdate || this.props.delayUpdate)) {\n setTimeout(function () {\n _this.refreshProperties(dProps, nextProps, silent);\n });\n }\n else {\n this.refreshProperties(dProps, nextProps, silent);\n }\n };\n ComponentBase.prototype.refreshProperties = function (dProps, nextProps, silent) {\n var statelessTemplates = !isNullOrUndefined(this.props['statelessTemplates']) ? this.props['statelessTemplates'] : [];\n if (Object.keys(dProps).length) {\n if (!silent) {\n // tslint:disable-next-line:no-any\n this.processComplexTemplate(dProps, this);\n }\n this.setProperties(dProps, silent);\n }\n if (statelessTemplates.indexOf('directiveTemplates') === -1) {\n this.refreshChild(silent, nextProps);\n }\n };\n ComponentBase.prototype.processComplexTemplate = function (curObject, context) {\n var compTemplate = context.complexTemplate;\n if (compTemplate) {\n for (var prop in compTemplate) {\n var PropVal = compTemplate[\"\" + prop];\n if (curObject[\"\" + prop]) {\n setValue(PropVal, getValue(prop, curObject), curObject);\n }\n }\n }\n };\n ComponentBase.prototype.getDefaultAttributes = function () {\n var _this = this;\n this.isReact = true;\n var propKeys = Object.keys(this.props);\n var stringValue = ['autocomplete', 'dropdownlist', 'combobox'];\n // if ((stringValue.indexOf(this.getModuleName()) !== -1) && (!isNullOrUndefined(this.props[\"value\"]))) {\n // this.value = (<{ [key: string]: Object }>this.props)[\"value\"];\n // }\n if (!this.htmlattributes) {\n this.htmlattributes = {};\n }\n this.attrKeys = defaulthtmlkeys.concat(this.controlAttributes || []);\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var prop = propKeys_1[_i];\n if (prop.indexOf('data-') !== -1 || prop.indexOf('aria-') !== -1 || this.attrKeys.indexOf(prop) !== -1) {\n if (this.htmlattributes[\"\" + prop] !== this.props[\"\" + prop]) {\n this.htmlattributes[\"\" + prop] = this.props[\"\" + prop];\n }\n }\n }\n if (!this.htmlattributes.ref) {\n /* tslint:disable:no-any */\n this.htmlattributes.ref = function (ele) {\n _this.reactElement = ele;\n };\n var keycompoentns = ['autocomplete', 'combobox', 'dropdownlist', 'dropdowntree', 'multiselect',\n 'listbox', 'colorpicker', 'numerictextbox', 'textbox',\n 'uploader', 'maskedtextbox', 'slider', 'datepicker', 'datetimepicker', 'daterangepicker', 'timepicker', 'checkbox', 'switch', 'radio'];\n if (keycompoentns.indexOf(this.getModuleName()) !== -1) {\n this.htmlattributes.key = '' + ComponentBase.reactUid;\n ComponentBase.reactUid++;\n }\n }\n if (this.clsName) {\n var clsList = this.element.classList;\n var className = this.htmlattributes['className'];\n for (var i = 0; i < clsList.length; i++) {\n if ((className.indexOf(clsList[parseInt(i.toString(), 10)]) === -1)) {\n this.htmlattributes['className'] = this.htmlattributes['className'] + ' ' + clsList[parseInt(i.toString(), 10)];\n }\n }\n this.clsName = false;\n }\n return this.htmlattributes;\n };\n /* tslint:disable:no-any */\n ComponentBase.prototype.trigger = function (eventName, eventProp, successHandler) {\n var _this = this;\n if (this.isDestroyed !== true && this.modelObserver) {\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n if ((eventName === 'change' || eventName === 'input')) {\n if (this.props.onChange && eventProp.event) {\n this.props.onChange.call(undefined, {\n syntheticEvent: eventProp.event,\n nativeEvent: { text: eventProp.value },\n value: eventProp.value,\n target: this\n });\n }\n }\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n if (eventName === 'created') {\n setTimeout(function () {\n _this.isCreated = true;\n if (!_this.isDestroyed) {\n _this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n }, 10);\n }\n else {\n this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n this.isProtectedOnChange = prevDetection;\n }\n };\n ComponentBase.prototype.compareValues = function (value1, value2) {\n var typeVal = typeof value1;\n var typeVal2 = typeof value2;\n if (typeVal === typeVal2) {\n if (value1 === value2) {\n return true;\n }\n if ((!isNullOrUndefined(value1) && value1.constructor) !== (!isNullOrUndefined(value2) && value2.constructor)) {\n return false;\n }\n if (value1 instanceof Date ||\n value1 instanceof RegExp ||\n value1 instanceof String ||\n value1 instanceof Number) {\n return value1.toString() === value2.toString();\n }\n if (isObject(value1) || Array.isArray(value1)) {\n var tempVal = value1;\n var tempVal2 = value2;\n if (isObject(tempVal)) {\n tempVal = [value1];\n tempVal2 = [value2];\n }\n return this.compareObjects(tempVal, tempVal2).status;\n }\n if (value1.constructor &&\n value1.constructor.name === value2.constructor.name &&\n (value1.constructor.name === 'Query' ||\n value1.constructor.name === 'DataManager')) {\n if (JSON.stringify(value1) === JSON.stringify(value2)) {\n return true;\n }\n }\n }\n return false;\n };\n ComponentBase.prototype.compareObjects = function (oldProps, newProps, propName) {\n var status = true;\n var lenSimilarity = (oldProps.length === newProps.length);\n var diffArray = [];\n var templateProps = !isNullOrUndefined(this['templateProps']) ? this['templateProps'] : [];\n if (lenSimilarity) {\n for (var i = 0, len = newProps.length; i < len; i++) {\n var curObj = {};\n var oldProp = oldProps[parseInt(i.toString(), 10)];\n var newProp = newProps[parseInt(i.toString(), 10)];\n var keys = Object.keys(newProp);\n if (keys.length !== 0) {\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var oldValue = oldProp[\"\" + key];\n var newValue = newProp[\"\" + key];\n if (key === 'items') {\n for (var _j = 0; _j < newValue.length; _j++) {\n if (this.getModuleName() === 'richtexteditor' && typeof (newValue[parseInt(_j.toString(), 10)]) === 'object') {\n return { status: true };\n }\n }\n }\n if (this.getModuleName() === 'grid' && key === 'field') {\n curObj[\"\" + key] = newValue;\n }\n if (!oldProp.hasOwnProperty(key) || !((templateProps.length > 0 && templateProps.indexOf(\"\" + key) === -1 && typeof (newValue) === 'function') ? this.compareValues(oldValue.toString(), newValue.toString()) : this.compareValues(oldValue, newValue))) {\n if (!propName) {\n return { status: false };\n }\n status = false;\n curObj[\"\" + key] = newValue;\n }\n }\n }\n else if (newProps[parseInt(i.toString(), 10)] === oldProps[parseInt(i.toString(), 10)]) {\n status = true;\n }\n else {\n if (!propName) {\n return { status: false };\n }\n status = false;\n }\n if (this.getModuleName() === 'grid' && propName === 'columns' && isNullOrUndefined(curObj['field'])) {\n curObj['field'] = undefined;\n }\n if (Object.keys(curObj).length) {\n diffArray.push({ index: i, value: curObj, key: propName });\n }\n }\n }\n else {\n status = false;\n }\n return { status: status, changedProperties: diffArray };\n };\n ComponentBase.prototype.refreshChild = function (silent, props) {\n if (this.checkInjectedModules) {\n var prevModule = this.getInjectedModules() || [];\n var curModule = this.getInjectedServices() || [];\n for (var _i = 0, curModule_1 = curModule; _i < curModule_1.length; _i++) {\n var mod = curModule_1[_i];\n if (prevModule.indexOf(mod) === -1) {\n prevModule.push(mod);\n }\n }\n this.injectedModules = prevModule;\n }\n if (this.directivekeys) {\n var changedProps = [];\n var directiveValue = this.validateChildren({}, this.directivekeys, (props || this.props));\n if (directiveValue && Object.keys(directiveValue).length) {\n if (!silent && this.skipRefresh) {\n for (var _a = 0, _b = this.skipRefresh; _a < _b.length; _a++) {\n var fields = _b[_a];\n delete directiveValue[\"\" + fields];\n }\n }\n if (this.prevProperties) {\n var dKeys = Object.keys(this.prevProperties);\n for (var i = 0; i < dKeys.length; i++) {\n var key = dKeys[parseInt(i.toString(), 10)];\n if (!directiveValue.hasOwnProperty(key)) {\n continue;\n }\n var compareOutput = this.compareObjects(this.prevProperties[\"\" + key], directiveValue[\"\" + key], key);\n if (compareOutput.status) {\n delete directiveValue[\"\" + key];\n }\n else {\n if (compareOutput.changedProperties.length) {\n changedProps = changedProps.concat(compareOutput.changedProperties);\n }\n var obj = {};\n obj[\"\" + key] = directiveValue[\"\" + key];\n this.prevProperties = extend(this.prevProperties, obj);\n }\n }\n }\n else {\n this.prevProperties = extend({}, directiveValue, {}, true);\n }\n if (changedProps.length) {\n if (this.getModuleName() === 'grid' && key === 'columns') {\n for (var _c1 = 0, allColumns = this.columns; _c1 < allColumns.length; _c1++) {\n var compareField1 = getValue('field', allColumns[parseInt(_c1.toString(), 10)]);\n var compareField2 = getValue(_c1 + '.value.field', changedProps);\n if (compareField1 === compareField2) {\n var propInstance = getValue(changedProps[parseInt(_c1.toString(), 10)].key + '.' + changedProps[parseInt(_c1.toString(), 10)].index, this);\n if (propInstance && propInstance.setProperties) {\n propInstance.setProperties(changedProps[parseInt(_c1.toString(), 10)].value);\n }\n else {\n extend(propInstance, changedProps[parseInt(_c1.toString(), 10)].value);\n }\n }\n else {\n this.setProperties(directiveValue, silent);\n }\n }\n }\n else {\n for (var _c = 0, changedProps_1 = changedProps; _c < changedProps_1.length; _c++) {\n var changes = changedProps_1[_c];\n var propInstance_1 = getValue(changes.key + '.' + changes.index, this);\n if (propInstance_1 && propInstance_1.setProperties) {\n propInstance_1.setProperties(changes.value);\n }\n else {\n extend(propInstance_1, changes.value);\n }\n }\n }\n }\n else {\n this.setProperties(directiveValue, silent);\n }\n }\n }\n };\n ComponentBase.prototype.componentWillUnmount = function () {\n clearTimeout(this.cachedTimeOut);\n var modulesName = ['dropdowntree', 'checkbox'];\n // tslint:disable-next-line:no-any\n if (this.initRenderCalled && this.isAppendCalled && this.element && ((!modulesName.indexOf(this.getModuleName())) ? document.body.contains(this.element) : true) && !this.isDestroyed && this.isCreated) {\n this.destroy();\n }\n };\n // tslint:disable:no-any\n ComponentBase.prototype.appendReactElement = function (element, container) {\n var portal = ReactDOM.createPortal(element, container);\n if (!this.portals) {\n this.portals = [portal];\n }\n else {\n this.portals.push(portal);\n }\n };\n // tslint:disable:no-any\n ComponentBase.prototype.renderReactTemplates = function (callback) {\n this.isReactForeceUpdate = true;\n if (callback) {\n this.forceUpdate(callback);\n }\n else {\n this.forceUpdate();\n }\n this.isReactForeceUpdate = false;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.clearTemplate = function (templateNames, index, callback) {\n var _this = this;\n var tempPortal = [];\n if (templateNames && templateNames.length) {\n Array.prototype.forEach.call(templateNames, function (propName) {\n var indexCount = 0;\n var propIndexCount = 0;\n _this.portals.forEach(function (portal) {\n if (portal.propName === propName) {\n tempPortal.push(propIndexCount);\n propIndexCount++;\n }\n });\n if (!isNullOrUndefined(index) && _this.portals[index] && _this.portals[index].propName === propName) {\n _this.portals.splice(index, 1);\n indexCount++;\n }\n else {\n for (var i = 0; i < _this.portals.length; i++) {\n if (_this.portals[parseInt(i.toString(), 10)].propName === propName) {\n _this.portals.splice(i, 1);\n i--;\n }\n }\n }\n });\n }\n else {\n this.portals = [];\n }\n this.renderReactTemplates(callback);\n };\n /* tslint:disable:no-any */\n ComponentBase.prototype.validateChildren = function (childCache, mapper, props) {\n var flag = false;\n var childs = React.Children.toArray(props.children);\n for (var _i = 0, childs_1 = childs; _i < childs_1.length; _i++) {\n var child = childs_1[_i];\n var ifield = this.getChildType(child);\n var key = mapper[\"\" + ifield];\n if (ifield && mapper) {\n // tslint:disable\n var childProps = this.getChildProps(React.Children.toArray(child.props.children), key);\n if (childProps.length) {\n flag = true;\n // tslint:disable\n childCache[child.type.propertyName || ifield] = childProps;\n }\n }\n }\n if (flag) {\n return childCache;\n }\n return null;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.getChildType = function (child) {\n if (child.type && child.type.isDirective) {\n return child.type.moduleName || '';\n }\n return '';\n };\n ComponentBase.prototype.getChildProps = function (subChild, matcher) {\n var ret = [];\n for (var _i = 0, subChild_1 = subChild; _i < subChild_1.length; _i++) {\n var child = subChild_1[_i];\n var accessProp = false;\n var key = void 0;\n if (typeof matcher === 'string') {\n accessProp = true;\n key = matcher;\n }\n else {\n key = Object.keys(matcher)[0];\n }\n var prop = child.props;\n // tslint:disable-next-line:no-any\n var field = this.getChildType(child);\n if (field === key) {\n if (accessProp || !prop.children) {\n // tslint:disable\n var cacheVal = extend({}, prop, {}, true);\n // tslint:disable\n this.processComplexTemplate(cacheVal, child.type);\n ret.push(cacheVal);\n }\n else {\n var cachedValue = this.validateChildren(extend({}, prop), matcher[\"\" + key], prop) || prop;\n if (cachedValue['children']) {\n delete cachedValue['children'];\n }\n // tslint:disable\n this.processComplexTemplate(cachedValue, child.type);\n ret.push(cachedValue);\n }\n }\n }\n return ret;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.getInjectedServices = function () {\n var childs = React.Children.toArray(this.props.children);\n for (var _i = 0, childs_2 = childs; _i < childs_2.length; _i++) {\n var child = childs_2[_i];\n /* tslint:disable:no-any */\n if (child.type.isService) {\n return child.props.services;\n }\n }\n return [];\n };\n /**\n * @private\n */\n ComponentBase.reactUid = 1;\n return ComponentBase;\n}(React.Component));\nexport { ComponentBase };\n/* tslint:enable:no-any */\n","// eslint-disable-next-line\nexport function applyMixins(derivedClass, baseClass) {\n // tslint:disable:typedef\n baseClass.forEach(function (baseClass) {\n Object.getOwnPropertyNames(baseClass.prototype).forEach(function (name) {\n if (name !== 'isMounted' && name !== 'replaceState') {\n derivedClass.prototype[\"\" + name] = baseClass.prototype[\"\" + name];\n }\n });\n });\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * Directory base\n */\nvar ComplexBase = /** @class */ (function (_super) {\n __extends(ComplexBase, _super);\n function ComplexBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ComplexBase.prototype.render = function () {\n return null;\n };\n ComplexBase.isDirective = true;\n return ComplexBase;\n}(React.PureComponent));\nexport { ComplexBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Dependency injection\n */\nimport * as React from 'react';\nvar Inject = /** @class */ (function (_super) {\n __extends(Inject, _super);\n function Inject() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // eslint-disable-next-line\n Inject.prototype.render = function () {\n return null;\n };\n Inject.isService = true;\n return Inject;\n}(React.PureComponent));\nexport { Inject };\n","/**\n * Template compiler for react\n */\nimport { setTemplateEngine, getTemplateEngine, extend } from '@syncfusion/ej2-base';\nimport * as ReactDOM from 'react-dom';\nimport * as React from 'react';\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar stringCompiler = getTemplateEngine();\n// eslint-disable-next-line\nexport function compile(templateElement, helper) {\n if (typeof templateElement === 'string' || (templateElement.prototype && templateElement.prototype.CSPTemplate && typeof templateElement === 'function')) {\n return stringCompiler(templateElement, helper);\n }\n else {\n return function (data, component, prop, element) {\n var actTemplate = templateElement;\n var actData = data;\n if (typeof actTemplate === 'object') {\n actTemplate = templateElement.template;\n actData = extend({}, data, templateElement.data || {});\n }\n var cEle;\n if (element) {\n cEle = element;\n }\n else {\n cEle = document.createElement('div');\n }\n var rele = React.createElement(actTemplate, actData);\n var portal = ReactDOM.createPortal(rele, cEle);\n portal.propName = prop;\n if (!component.portals) {\n component.portals = [portal];\n }\n else {\n component.portals.push(portal);\n }\n if (!element) {\n return [cEle];\n }\n };\n }\n}\nsetTemplateEngine({ compile: compile });\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `ButtonComponent` represents the react Button Component.\n * ```ts\n * \n * ```\n */\nvar ButtonComponent = /** @class */ (function (_super) {\n __extends(ButtonComponent, _super);\n function ButtonComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n ButtonComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('button', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return ButtonComponent;\n}(Button));\nexport { ButtonComponent };\napplyMixins(ButtonComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the react CheckBox Component.\n * ```ts\n * \n * ```\n */\nvar CheckBoxComponent = /** @class */ (function (_super) {\n __extends(CheckBoxComponent, _super);\n function CheckBoxComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n CheckBoxComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return CheckBoxComponent;\n}(CheckBox));\nexport { CheckBoxComponent };\napplyMixins(CheckBoxComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { DatePicker } from '@syncfusion/ej2-calendars';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the Essential JS 2 React DatePicker Component.\n * ```ts\n * \n * ```\n */\nvar DatePickerComponent = /** @class */ (function (_super) {\n __extends(DatePickerComponent, _super);\n function DatePickerComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n DatePickerComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return DatePickerComponent;\n}(DatePicker));\nexport { DatePickerComponent };\napplyMixins(DatePickerComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * The DropDownList component contains a list of predefined values, from which the user can choose a single value.\n * ```\n * \n * ```\n */\nvar DropDownListComponent = /** @class */ (function (_super) {\n __extends(DropDownListComponent, _super);\n function DropDownListComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = [\"headerTemplate\", \"valueTemplate\", \"itemTemplate\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n DropDownListComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return DropDownListComponent;\n}(DropDownList));\nexport { DropDownListComponent };\napplyMixins(DropDownListComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `ColumnDirective` represent a column of the react Grid.\n * It must be contained in a Grid component(`GridComponent`).\n * ```tsx\n * \n * \n * \n * \n * \n * \n * ```\n */\nvar ColumnDirective = /** @class */ (function (_super) {\n __extends(ColumnDirective, _super);\n function ColumnDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnDirective.moduleName = 'column';\n ColumnDirective.complexTemplate = { 'filter.itemTemplate': 'filter.itemTemplate' };\n return ColumnDirective;\n}(ComplexBase));\nexport { ColumnDirective };\nvar ColumnsDirective = /** @class */ (function (_super) {\n __extends(ColumnsDirective, _super);\n function ColumnsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnsDirective.propertyName = 'columns';\n ColumnsDirective.moduleName = 'columns';\n return ColumnsDirective;\n}(ComplexBase));\nexport { ColumnsDirective };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Grid } from '@syncfusion/ej2-grids';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `GridComponent` represents the react Grid.\n * ```tsx\n * \n * ```\n */\nvar GridComponent = /** @class */ (function (_super) {\n __extends(GridComponent, _super);\n function GridComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.directivekeys = { 'columns': { 'column': { 'stackedColumns': 'stackedColumn' } }, 'aggregates': { 'aggregate': { 'aggregateColumns': 'aggregateColumn' } } };\n _this.statelessTemplateProps = null;\n _this.templateProps = [\"template\", \"headerTemplate\", \"commandsTemplate\", \"filter.itemTemplate\", \"editTemplate\", \"filterTemplate\"];\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n GridComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return GridComponent;\n}(Grid));\nexport { GridComponent };\napplyMixins(GridComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React NumericTextBox Component\n * ```html\n * \n * ```\n */\nvar NumericTextBoxComponent = /** @class */ (function (_super) {\n __extends(NumericTextBoxComponent, _super);\n function NumericTextBoxComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n NumericTextBoxComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return NumericTextBoxComponent;\n}(NumericTextBox));\nexport { NumericTextBoxComponent };\napplyMixins(NumericTextBoxComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, EventHandler, L10n, setValue, getValue, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, detach, Internationalization, getUniqueID, closest } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar HIDE_CLEAR = 'e-clear-icon-hide';\nvar TEXTBOX_FOCUS = 'e-input-focus';\nvar containerAttr = ['title', 'style', 'class'];\n/**\n * Represents the TextBox component that allows the user to enter the values based on it's type.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar TextBox = /** @class */ (function (_super) {\n __extends(TextBox, _super);\n /**\n *\n * @param {TextBoxModel} options - Specifies the TextBox model.\n * @param {string | HTMLInputElement | HTMLTextAreaElement} element - Specifies the element to render as component.\n * @private\n */\n function TextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousValue = null;\n _this.isAngular = false;\n _this.isHiddenInput = false;\n _this.isForm = false;\n _this.inputPreviousValue = null;\n _this.isVue = false;\n _this.textboxOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {TextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {TextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'floatLabelType':\n Input.removeFloating(this.textboxWrapper);\n Input.addFloating(this.respectiveElement, this.floatLabelType, this.placeholder);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n this.bindClearEvent();\n break;\n case 'width':\n Input.setWidth(newProp.width, this.textboxWrapper.container);\n break;\n case 'value':\n {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (!this.isBlank(this.value)) {\n this.value = this.value.toString();\n }\n this.isProtectedOnChange = prevOnChange;\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if ((this.isAngular || this.isVue) && this.preventChange === true) {\n this.previousValue = this.isAngular ? this.value : this.previousValue;\n this.preventChange = false;\n }\n else if (isNullOrUndefined(this.isAngular) || !this.isAngular\n || (this.isAngular && !this.preventChange) || (this.isAngular && isNullOrUndefined(this.preventChange))) {\n this.raiseChangeEvent();\n }\n }\n break;\n case 'htmlAttributes':\n {\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkAttributes(true);\n this.multiline && !isNullOrUndefined(this.textarea) ? Input.validateInputType(this.textboxWrapper.container, this.textarea) : Input.validateInputType(this.textboxWrapper.container, this.element);\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.respectiveElement);\n break;\n case 'type':\n if (this.respectiveElement.tagName !== 'TEXTAREA') {\n this.respectiveElement.setAttribute('type', this.type);\n Input.validateInputType(this.textboxWrapper.container, this.element);\n this.raiseChangeEvent();\n }\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.respectiveElement, this.textboxWrapper);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.textboxWrapper.container]);\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n Input.calculateWidth(this.respectiveElement, this.textboxWrapper.container);\n break;\n case 'autocomplete':\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else {\n this.removeAttributes(['autocomplete']);\n }\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n break;\n }\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TextBox.prototype.getModuleName = function () {\n return 'textbox';\n };\n TextBox.prototype.isBlank = function (str) {\n return (!str || /^\\s*$/.test(str));\n };\n TextBox.prototype.preRender = function () {\n this.cloneElement = this.element.cloneNode(true);\n this.formElement = closest(this.element, 'form');\n if (!isNullOrUndefined(this.formElement)) {\n this.isForm = true;\n }\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-TEXTBOX') {\n var ejInstance = getValue('ej2_instances', this.element);\n var inputElement = this.multiline ?\n this.createElement('textarea') :\n this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n inputElement.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n inputElement.innerHTML = this.element.innerHTML;\n if (attributeName === 'name') {\n this.element.removeAttribute('name');\n }\n }\n else if (attributeName === 'class') {\n inputElement.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, true);\n }\n if (this.element.tagName !== 'TEXTAREA') {\n this.element.setAttribute('type', this.type);\n }\n if (this.type === 'text') {\n this.element.setAttribute('role', 'textbox');\n }\n this.globalize = new Internationalization(this.locale);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('textbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('textbox'));\n }\n if (!this.element.hasAttribute('name')) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (this.element.tagName === 'INPUT' && this.multiline) {\n this.isHiddenInput = true;\n this.textarea = this.createElement('textarea');\n this.element.parentNode.insertBefore(this.textarea, this.element);\n this.element.setAttribute('type', 'hidden');\n this.textarea.setAttribute('name', this.element.getAttribute('name'));\n this.element.removeAttribute('name');\n this.textarea.setAttribute('role', this.element.getAttribute('role'));\n this.element.removeAttribute('role');\n this.textarea.setAttribute('id', getUniqueID('textarea'));\n var apiAttributes = ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var index = 0; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (this.element.hasAttribute(attributeName) && containerAttr.indexOf(attributeName) < 0 &&\n !(attributeName === 'id' || attributeName === 'type' || attributeName === 'e-mappinguid')) {\n // e-mappinguid attribute is handled for Grid component.\n this.textarea.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n if (apiAttributes.indexOf(attributeName) < 0) {\n this.element.removeAttribute(attributeName);\n index--;\n }\n }\n }\n }\n };\n TextBox.prototype.checkAttributes = function (isDynamic) {\n var attrs = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var _i = 0, attrs_1 = attrs; _i < attrs_1.length; _i++) {\n var key = attrs_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'disabled':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'autocomplete':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['autocomplete'] === undefined)) || isDynamic) {\n var autoCompleteTxt = this.element.autocomplete === 'off' ? 'off' : 'on';\n this.setProperties({ autocomplete: autoCompleteTxt }, !isDynamic);\n }\n break;\n case 'value':\n if (((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) || isDynamic) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'type':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['type'] === undefined)) || isDynamic) {\n this.setProperties({ type: this.element.type }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n TextBox.prototype.render = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getInputValidClassList(this.cssClass);\n }\n this.respectiveElement = (this.isHiddenInput) ? this.textarea : this.element;\n this.textboxWrapper = Input.createInput({\n element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValue,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n });\n this.updateHTMLAttrToWrapper();\n if (this.isHiddenInput) {\n this.respectiveElement.parentNode.insertBefore(this.element, this.respectiveElement);\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.value)) {\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n this.initialValue = this.value;\n this.setInitialValue();\n }\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else if (!isNullOrUndefined(this.textboxOptions) && (this.textboxOptions['autocomplete'] !== undefined)) {\n this.removeAttributes(['autocomplete']);\n }\n this.previousValue = this.value;\n this.inputPreviousValue = this.value;\n this.respectiveElement.defaultValue = this.respectiveElement.value;\n Input.setWidth(this.width, this.textboxWrapper.container);\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n TextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = this.getInputValidClassList(this.htmlAttributes[\"\" + key]);\n if (updatedClassValues !== '') {\n addClass([this.textboxWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.textboxWrapper.container.getAttribute(key);\n setStyle = !isNullOrUndefined(setStyle) ? (setStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.textboxWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.textboxWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n TextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.multiline && !isNullOrUndefined(this.textarea) ? this.textarea.setAttribute(key, this.htmlAttributes[\"\" + key]) : this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n TextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getInputValidClassList(newClass), [this.textboxWrapper.container], this.getInputValidClassList(oldClass));\n };\n TextBox.prototype.getInputValidClassList = function (inputClassName) {\n var result = inputClassName;\n if (!isNullOrUndefined(inputClassName) && inputClassName !== '') {\n result = (inputClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n TextBox.prototype.setInitialValue = function () {\n if (!this.isAngular) {\n this.respectiveElement.setAttribute('value', this.initialValue);\n }\n };\n TextBox.prototype.wireEvents = function () {\n EventHandler.add(this.respectiveElement, 'focus', this.focusHandler, this);\n EventHandler.add(this.respectiveElement, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.respectiveElement, 'keydown', this.keydownHandler, this);\n EventHandler.add(this.respectiveElement, 'input', this.inputHandler, this);\n EventHandler.add(this.respectiveElement, 'change', this.changeHandler, this);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n this.bindClearEvent();\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-autofill') &&\n this.textboxWrapper.container.classList.contains('e-outline')) {\n EventHandler.add((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler, this);\n }\n };\n TextBox.prototype.animationHandler = function () {\n this.textboxWrapper.container.classList.add('e-valid-input');\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label)) {\n label.classList.add('e-label-top');\n if (label.classList.contains('e-label-bottom')) {\n label.classList.remove('e-label-bottom');\n }\n }\n };\n TextBox.prototype.resetValue = function (value) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = value;\n this.isProtectedOnChange = prevOnChange;\n };\n TextBox.prototype.resetForm = function () {\n if (this.isAngular) {\n this.resetValue('');\n }\n else {\n this.resetValue(this.initialValue);\n }\n if (!isNullOrUndefined(this.textboxWrapper)) {\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label) && this.floatLabelType !== 'Always') {\n if ((isNullOrUndefined(this.initialValue) || this.initialValue === '')) {\n label.classList.add('e-label-bottom');\n label.classList.remove('e-label-top');\n }\n else if (this.initialValue !== '') {\n label.classList.add('e-label-top');\n label.classList.remove('e-label-bottom');\n }\n }\n }\n };\n TextBox.prototype.focusHandler = function (args) {\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('focus', eventArgs);\n };\n TextBox.prototype.focusOutHandler = function (args) {\n if (!(this.previousValue === null && this.value === null && this.respectiveElement.value === '') &&\n (this.previousValue !== this.value)) {\n this.raiseChangeEvent(args, true);\n }\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('blur', eventArgs);\n };\n TextBox.prototype.keydownHandler = function (args) {\n if ((args.keyCode === 13 || args.keyCode === 9) && !((this.previousValue === null || this.previousValue === \"\") && (this.value === null || this.value === \"\") && this.respectiveElement.value === \"\")) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n }\n };\n TextBox.prototype.inputHandler = function (args) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var textboxObj = this;\n var eventArgs = {\n event: args,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if (this.isAngular) {\n textboxObj.localChange({ value: this.respectiveElement.value });\n this.preventChange = true;\n }\n if (this.isVue) {\n this.preventChange = true;\n }\n this.trigger('input', eventArgs);\n args.stopPropagation();\n };\n TextBox.prototype.changeHandler = function (args) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n if (this.previousValue != this.value) {\n this.raiseChangeEvent(args, true);\n }\n args.stopPropagation();\n };\n TextBox.prototype.raiseChangeEvent = function (event, interaction) {\n var eventArgs = {\n event: event,\n value: this.value,\n previousValue: this.previousValue,\n container: this.textboxWrapper.container,\n isInteraction: interaction ? interaction : false,\n isInteracted: interaction ? interaction : false\n };\n this.preventChange = false;\n this.trigger('change', eventArgs);\n this.previousValue = this.value;\n //EJ2CORE-738:For this task we update the textarea value to the input when input tag with multiline is present\n if (this.element.tagName === 'INPUT' && this.multiline && Browser.info.name === 'mozilla') {\n this.element.value = this.respectiveElement.value;\n }\n };\n TextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n if (this.enabled) {\n EventHandler.add(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler, this);\n }\n else {\n EventHandler.remove(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler);\n }\n }\n };\n TextBox.prototype.resetInputHandler = function (event) {\n event.preventDefault();\n if (!(this.textboxWrapper.clearButton.classList.contains(HIDE_CLEAR)) || this.textboxWrapper.container.classList.contains('e-static-clear')) {\n Input.setValue('', this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.setProperties({ value: this.respectiveElement.value }, true);\n var eventArgs = {\n event: event,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.trigger('input', eventArgs);\n this.inputPreviousValue = this.respectiveElement.value;\n this.raiseChangeEvent(event, true);\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n }\n };\n TextBox.prototype.unWireEvents = function () {\n EventHandler.remove(this.respectiveElement, 'focus', this.focusHandler);\n EventHandler.remove(this.respectiveElement, 'blur', this.focusOutHandler);\n EventHandler.remove(this.respectiveElement, 'keydown', this.keydownHandler);\n EventHandler.remove(this.respectiveElement, 'input', this.inputHandler);\n EventHandler.remove(this.respectiveElement, 'change', this.changeHandler);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-outline') &&\n this.textboxWrapper.container.classList.contains('e-autofill')) {\n EventHandler.remove((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also, it maintains the initial TextBox element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n TextBox.prototype.destroy = function () {\n this.unWireEvents();\n if (this.element.tagName === 'INPUT' && this.multiline) {\n detach(this.textboxWrapper.container.getElementsByTagName('textarea')[0]);\n this.respectiveElement = this.element;\n this.element.removeAttribute('type');\n }\n this.respectiveElement.value = this.respectiveElement.defaultValue;\n this.respectiveElement.classList.remove('e-input');\n this.removeAttributes(['aria-disabled', 'aria-readonly', 'aria-labelledby']);\n if (!isNullOrUndefined(this.textboxWrapper)) {\n this.textboxWrapper.container.insertAdjacentElement('afterend', this.respectiveElement);\n detach(this.textboxWrapper.container);\n }\n this.textboxWrapper = null;\n Input.destroy();\n _super.prototype.destroy.call(this);\n };\n /**\n * Adding the icons to the TextBox component.\n *\n * @param { string } position - Specify the icon placement on the TextBox. Possible values are append and prepend.\n * @param { string | string[] } icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for TextBox.\n * @returns {void}\n */\n TextBox.prototype.addIcon = function (position, icons) {\n Input.addIcon(position, icons, this.textboxWrapper.container, this.respectiveElement, this.createElement);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n */\n TextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Adding the multiple attributes as key-value pair to the TextBox element.\n *\n * @param {string} attributes - Specifies the attributes to be add to TextBox element.\n * @returns {void}\n */\n TextBox.prototype.addAttributes = function (attributes) {\n for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: true }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'class') {\n this.respectiveElement.classList.add(attributes[\"\" + key]);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: attributes[\"\" + key] }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else if (key === 'rows' && this.respectiveElement.tagName === 'TEXTAREA') {\n this.respectiveElement.setAttribute(key, attributes[\"\" + key]);\n }\n else {\n this.respectiveElement.setAttribute(key, attributes[\"\" + key]);\n }\n }\n };\n /**\n * Removing the multiple attributes as key-value pair to the TextBox element.\n *\n * @param { string[] } attributes - Specifies the attributes name to be removed from TextBox element.\n * @returns {void}\n */\n TextBox.prototype.removeAttributes = function (attributes) {\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: false }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: null }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else {\n this.respectiveElement.removeAttribute(key);\n }\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n TextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.respectiveElement && this.enabled) {\n this.respectiveElement.focus();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n addClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n TextBox.prototype.focusOut = function () {\n if (document.activeElement === this.respectiveElement && this.enabled) {\n this.respectiveElement.blur();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n removeClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n __decorate([\n Property('text')\n ], TextBox.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"value\", void 0);\n __decorate([\n Property('Never')\n ], TextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property('')\n ], TextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('on')\n ], TextBox.prototype, \"autocomplete\", void 0);\n __decorate([\n Property({})\n ], TextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"multiline\", void 0);\n __decorate([\n Property(true)\n ], TextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"input\", void 0);\n TextBox = __decorate([\n NotifyPropertyChanges\n ], TextBox);\n return TextBox;\n}(Component));\nexport { TextBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React TextBox Component\n * ```html\n * \n * ```\n */\nvar TextBoxComponent = /** @class */ (function (_super) {\n __extends(TextBoxComponent, _super);\n function TextBoxComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n TextBoxComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return TextBoxComponent;\n}(TextBox));\nexport { TextBoxComponent };\napplyMixins(TextBoxComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, closest, Collection, Complex, attributes, detach, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, select, isVisible } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Browser, formatUnit, L10n } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, isNullOrUndefined as isNOU, selectAll, addClass, removeClass, remove } from '@syncfusion/ej2-base';\nimport { EventHandler, rippleEffect, Touch, compile, Animation } from '@syncfusion/ej2-base';\nimport { getRandomId, SanitizeHtmlHelper, Draggable } from '@syncfusion/ej2-base';\nimport { Toolbar } from '../toolbar/toolbar';\nvar CLS_TAB = 'e-tab';\nvar CLS_HEADER = 'e-tab-header';\nvar CLS_BLA_TEM = 'blazor-template';\nvar CLS_CONTENT = 'e-content';\nvar CLS_NEST = 'e-nested';\nvar CLS_ITEMS = 'e-items';\nvar CLS_ITEM = 'e-item';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_RTL = 'e-rtl';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_DISABLE = 'e-disable';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_FOCUS = 'e-focused';\nvar CLS_ICONS = 'e-icons';\nvar CLS_ICON = 'e-icon';\nvar CLS_ICON_TAB = 'e-icon-tab';\nvar CLS_ICON_CLOSE = 'e-close-icon';\nvar CLS_CLOSE_SHOW = 'e-close-show';\nvar CLS_TEXT = 'e-tab-text';\nvar CLS_INDICATOR = 'e-indicator';\nvar CLS_WRAP = 'e-tab-wrap';\nvar CLS_TEXT_WRAP = 'e-text-wrap';\nvar CLS_TAB_ICON = 'e-tab-icon';\nvar CLS_TB_ITEMS = 'e-toolbar-items';\nvar CLS_TB_ITEM = 'e-toolbar-item';\nvar CLS_TB_POP = 'e-toolbar-pop';\nvar CLS_TB_POPUP = 'e-toolbar-popup';\nvar CLS_HOR_NAV = 'e-hor-nav';\nvar CLS_POPUP_OPEN = 'e-popup-open';\nvar CLS_POPUP_CLOSE = 'e-popup-close';\nvar CLS_PROGRESS = 'e-progress';\nvar CLS_IGNORE = 'e-ignore';\nvar CLS_OVERLAY = 'e-overlay';\nvar CLS_HSCRCNT = 'e-hscroll-content';\nvar CLS_VSCRCNT = 'e-vscroll-content';\nvar CLS_VTAB = 'e-vertical-tab';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_VLEFT = 'e-vertical-left';\nvar CLS_VRIGHT = 'e-vertical-right';\nvar CLS_HBOTTOM = 'e-horizontal-bottom';\nvar CLS_FILL = 'e-fill-mode';\nvar TABITEMPREFIX = 'tabitem_';\nvar CLS_REORDER_ACTIVE_ITEM = 'e-reorder-active-item';\n/**\n * Objects used for configuring the Tab selecting item action properties.\n */\nvar TabActionSettings = /** @class */ (function (_super) {\n __extends(TabActionSettings, _super);\n function TabActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideLeftIn')\n ], TabActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(600)\n ], TabActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], TabActionSettings.prototype, \"easing\", void 0);\n return TabActionSettings;\n}(ChildProperty));\nexport { TabActionSettings };\n/**\n * Objects used for configuring the Tab animation properties.\n */\nvar TabAnimationSettings = /** @class */ (function (_super) {\n __extends(TabAnimationSettings, _super);\n function TabAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideLeftIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"previous\", void 0);\n __decorate([\n Complex({ effect: 'SlideRightIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"next\", void 0);\n return TabAnimationSettings;\n}(ChildProperty));\nexport { TabAnimationSettings };\n/**\n * Objects used for configuring the Tab item header properties.\n */\nvar Header = /** @class */ (function (_super) {\n __extends(Header, _super);\n function Header() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Header.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Header.prototype, \"iconCss\", void 0);\n __decorate([\n Property('left')\n ], Header.prototype, \"iconPosition\", void 0);\n return Header;\n}(ChildProperty));\nexport { Header };\n/**\n * An array of object that is used to configure the Tab.\n */\nvar TabItem = /** @class */ (function (_super) {\n __extends(TabItem, _super);\n function TabItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Header)\n ], TabItem.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], TabItem.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TabItem.prototype, \"disabled\", void 0);\n __decorate([\n Property(true)\n ], TabItem.prototype, \"visible\", void 0);\n __decorate([\n Property()\n ], TabItem.prototype, \"id\", void 0);\n __decorate([\n Property(-1)\n ], TabItem.prototype, \"tabIndex\", void 0);\n return TabItem;\n}(ChildProperty));\nexport { TabItem };\n/**\n * Tab is a content panel to show multiple contents in a single space, one at a time.\n * Each Tab item has an associated content, that will be displayed based on the active Tab header item.\n * ```html\n *
    \n * \n * ```\n */\nvar Tab = /** @class */ (function (_super) {\n __extends(Tab, _super);\n /**\n * Initializes a new instance of the Tab class.\n *\n * @param {TabModel} options - Specifies Tab model properties as options.\n * @param {string | HTMLElement} element - Specifies the element that is rendered as a Tab.\n */\n function Tab(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.show = {};\n _this.hide = {};\n _this.maxHeight = 0;\n _this.title = 'Close';\n _this.isInteracted = false;\n _this.lastIndex = 0;\n _this.isAdd = false;\n _this.isIconAlone = false;\n _this.draggableItems = [];\n _this.resizeContext = _this.refreshActiveTabBorder.bind(_this);\n /**\n * Contains the keyboard configuration of the Tab.\n */\n _this.keyConfigs = {\n tab: 'tab',\n home: 'home',\n end: 'end',\n enter: 'enter',\n space: 'space',\n delete: 'delete',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow'\n };\n return _this;\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers, attributes and classes.\n *\n * @returns {void}\n */\n Tab.prototype.destroy = function () {\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n if (!isNOU(this.tbObj)) {\n this.tbObj.destroy();\n this.tbObj = null;\n }\n this.unWireEvents();\n this.element.removeAttribute('aria-disabled');\n this.expTemplateContent();\n if (!this.isTemplate) {\n while (this.element.firstElementChild) {\n remove(this.element.firstElementChild);\n }\n }\n else {\n var cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n this.element.classList.remove(CLS_TEMPLATE);\n if (!isNOU(cntEle)) {\n cntEle.innerHTML = this.cnt;\n }\n }\n if (this.btnCls) {\n this.btnCls = null;\n }\n this.hdrEle = null;\n this.cntEle = null;\n this.tbItems = null;\n this.tbItem = null;\n this.tbPop = null;\n this.prevItem = null;\n this.popEle = null;\n this.bdrLine = null;\n this.content = null;\n this.dragItem = null;\n this.cloneElement = null;\n this.draggingItems = [];\n if (this.draggableItems && this.draggableItems.length > 0) {\n for (var i = 0; i < this.draggableItems.length; i++) {\n this.draggableItems[i].destroy();\n this.draggableItems[i] = null;\n }\n this.draggableItems = [];\n }\n _super.prototype.destroy.call(this);\n this.trigger('destroyed');\n };\n /**\n * Refresh the tab component\n *\n * @returns {void}\n */\n Tab.prototype.refresh = function () {\n if (this.isReact) {\n this.clearTemplate();\n }\n _super.prototype.refresh.call(this);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Initialize component\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.prevIndex = 0;\n this.isNested = false;\n this.isPopup = false;\n this.initRender = true;\n this.isSwiped = false;\n this.itemIndexArray = [];\n this.templateEle = [];\n if (this.allowDragAndDrop) {\n this.dragArea = !isNOU(this.dragArea) ? this.dragArea : '#' + this.element.id + ' ' + ('.' + CLS_HEADER);\n }\n if (!isNOU(nested)) {\n nested.parentElement.classList.add(CLS_NEST);\n this.isNested = true;\n }\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : (name === 'edge') ? 'e-edge' : (name === 'safari') ? 'e-safari' : '';\n setStyle(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.setCssClass(this.element, this.cssClass, true);\n attributes(this.element, { 'aria-disabled': 'false' });\n this.setCssClass(this.element, css, true);\n this.updatePopAnimationConfig();\n };\n /**\n * Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.render = function () {\n this.btnCls = this.createElement('span', { className: CLS_ICONS + ' ' + CLS_ICON_CLOSE, attrs: { title: this.title } });\n this.tabId = this.element.id.length > 0 ? ('-' + this.element.id) : getRandomId();\n this.renderContainer();\n this.wireEvents();\n this.initRender = false;\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n this.refreshActiveBorder();\n });\n }\n };\n Tab.prototype.renderContainer = function () {\n var ele = this.element;\n this.items.forEach(function (item, index) {\n if (isNOU(item.id) && !isNOU(item.setProperties)) {\n item.setProperties({ id: TABITEMPREFIX + index.toString() }, true);\n }\n });\n if (this.items.length > 0 && ele.children.length === 0) {\n ele.appendChild(this.createElement('div', { className: CLS_CONTENT }));\n this.setOrientation(this.headerPlacement, this.createElement('div', { className: CLS_HEADER }));\n this.isTemplate = false;\n }\n else if (this.element.children.length > 0) {\n this.isTemplate = true;\n ele.classList.add(CLS_TEMPLATE);\n var header = ele.querySelector('.' + CLS_HEADER);\n if (header && this.headerPlacement === 'Bottom') {\n this.setOrientation(this.headerPlacement, header);\n }\n }\n if (!isNOU(select('.' + CLS_HEADER, this.element)) && !isNOU(select('.' + CLS_CONTENT, this.element))) {\n this.renderHeader();\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n if (!isNOU(this.tbItems)) {\n rippleEffect(this.tbItems, { selector: '.e-tab-wrap' });\n }\n this.renderContent();\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n this.bdrLine = this.createElement('div', { className: CLS_INDICATOR + ' ' + CLS_HIDDEN + ' ' + CLS_IGNORE });\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!isNOU(scrCnt)) {\n scrCnt.insertBefore(this.bdrLine, scrCnt.firstChild);\n }\n else {\n this.tbItems.insertBefore(this.bdrLine, this.tbItems.firstChild);\n }\n this.setContentHeight(true);\n this.select(this.selectedItem);\n }\n this.setRTL(this.enableRtl);\n }\n };\n Tab.prototype.renderHeader = function () {\n var _this = this;\n var hdrPlace = this.headerPlacement;\n var tabItems = [];\n this.hdrEle = this.getTabHeader();\n this.addVerticalClass();\n if (!this.isTemplate) {\n tabItems = this.parseObject(this.items, 0);\n }\n else {\n if (this.element.children.length > 1 && this.element.children[1].classList.contains(CLS_HEADER)) {\n this.setProperties({ headerPlacement: 'Bottom' }, true);\n }\n var count = this.hdrEle.children.length;\n var hdrItems = [];\n for (var i = 0; i < count; i++) {\n hdrItems.push(this.hdrEle.children.item(i));\n }\n if (count > 0) {\n var tabItems_1 = this.createElement('div', { className: CLS_ITEMS });\n this.hdrEle.appendChild(tabItems_1);\n hdrItems.forEach(function (item, index) {\n _this.lastIndex = index;\n var attr = {\n className: CLS_ITEM, id: CLS_ITEM + _this.tabId + '_' + index\n };\n var txt = _this.createElement('span', {\n className: CLS_TEXT, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var cont = _this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txt + _this.btnCls.outerHTML\n }).outerHTML;\n var wrap = _this.createElement('div', {\n className: CLS_WRAP, innerHTML: cont,\n attrs: { role: 'tab', tabIndex: '-1', 'aria-selected': 'false', 'aria-controls': CLS_CONTENT + _this.tabId + '_' + index, 'aria-disabled': 'false' }\n });\n wrap.querySelector('.' + CLS_TEXT).appendChild(item);\n tabItems_1.appendChild(_this.createElement('div', attr));\n selectAll('.' + CLS_ITEM, tabItems_1)[index].appendChild(wrap);\n });\n }\n }\n this.tbObj = new Toolbar({\n width: (hdrPlace === 'Left' || hdrPlace === 'Right') ? 'auto' : '100%',\n height: (hdrPlace === 'Left' || hdrPlace === 'Right') ? '100%' : 'auto',\n overflowMode: this.overflowMode,\n items: (tabItems.length !== 0) ? tabItems : [],\n clicked: this.clickHandler.bind(this),\n scrollStep: this.scrollStep,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n cssClass: this.cssClass\n });\n this.tbObj.isStringTemplate = true;\n this.tbObj.createElement = this.createElement;\n this.tbObj.appendTo(this.hdrEle);\n attributes(this.hdrEle, { role: 'tablist' });\n if (!isNOU(this.element.getAttribute('aria-label'))) {\n this.hdrEle.setAttribute('aria-label', this.element.getAttribute('aria-label'));\n this.element.removeAttribute('aria-label');\n }\n else if (!isNOU(this.element.getAttribute('aria-labelledby'))) {\n this.hdrEle.setAttribute('aria-labelledby', this.element.getAttribute('aria-labelledby'));\n this.element.removeAttribute('aria-labelledby');\n }\n this.setCloseButton(this.showCloseButton);\n var toolbarHeader = this.tbObj.element.querySelector('.' + CLS_TB_ITEMS);\n if (!isNOU(toolbarHeader)) {\n if (isNOU(toolbarHeader.id) || toolbarHeader.id === '') {\n toolbarHeader.id = this.element.id + '_' + 'tab_header_items';\n }\n }\n };\n Tab.prototype.renderContent = function () {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n var hdrItem = selectAll('.' + CLS_TB_ITEM, this.element);\n if (this.isTemplate) {\n this.cnt = (this.cntEle.children.length > 0) ? this.cntEle.innerHTML : '';\n var contents = this.cntEle.children;\n for (var i = 0; i < hdrItem.length; i++) {\n if (contents.length - 1 >= i) {\n addClass([contents.item(i)], CLS_ITEM);\n attributes(contents.item(i), { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + i });\n contents.item(i).id = CLS_CONTENT + this.tabId + '_' + i;\n }\n }\n }\n };\n Tab.prototype.reRenderItems = function () {\n this.renderContainer();\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n };\n Tab.prototype.parseObject = function (items, index) {\n var _this = this;\n var tbItems = Array.prototype.slice.call(selectAll('.e-tab-header .' + CLS_TB_ITEM, this.element));\n var maxId = this.lastIndex;\n if (!this.isReplace && tbItems.length > 0) {\n var idList_1 = [];\n tbItems.forEach(function (item) {\n idList_1.push(_this.getIndexFromEle(item.id));\n });\n maxId = Math.max.apply(Math, idList_1);\n }\n var tItems = [];\n var txtWrapEle;\n var spliceArray = [];\n var i = 0;\n items.forEach(function (item, i) {\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n if ((isNOU(item.headerTemplate)) && (isNOU(item.header) || isNOU(item.header.text) ||\n ((item.header.text.length === 0)) && (css === ''))) {\n spliceArray.push(i);\n return;\n }\n var txt = item.headerTemplate || item.header.text;\n if (typeof txt === 'string' && _this.enableHtmlSanitizer) {\n txt = SanitizeHtmlHelper.sanitize(txt);\n }\n var itemIndex;\n if (_this.isReplace && !isNOU(_this.tbId) && _this.tbId !== '') {\n itemIndex = parseInt(_this.tbId.substring(_this.tbId.lastIndexOf('_') + 1), 10);\n _this.tbId = '';\n }\n else {\n itemIndex = index + i;\n }\n _this.lastIndex = ((tbItems.length === 0) ? i : ((_this.isReplace) ? (itemIndex) : (maxId + 1 + i)));\n var disabled = (item.disabled) ? ' ' + CLS_DISABLE + ' ' + CLS_OVERLAY : '';\n var hidden = (item.visible === false) ? ' ' + CLS_HIDDEN : '';\n txtWrapEle = _this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n var tHtml = ((txt instanceof Object) ? txt.outerHTML : txt);\n var txtEmpty = (!isNOU(tHtml) && tHtml !== '');\n if (!isNOU(txt.tagName)) {\n txtWrapEle.appendChild(txt);\n }\n else {\n _this.headerTextCompile(txtWrapEle, txt, i);\n }\n var tEle;\n var icon = _this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tCont = _this.createElement('div', { className: CLS_TEXT_WRAP });\n tCont.appendChild(txtWrapEle);\n if ((txt !== '' && txt !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tCont.insertBefore(icon, tCont.firstElementChild);\n }\n else {\n tCont.appendChild(icon);\n }\n tEle = txtWrapEle;\n _this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrapEle : icon);\n if (tEle === icon) {\n detach(txtWrapEle);\n tCont.appendChild(icon);\n _this.isIconAlone = true;\n }\n }\n var tabIndex = isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString();\n var wrapAttrs = (item.disabled) ? {} : { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-selected': 'false', 'aria-disabled': 'false' };\n tCont.appendChild(_this.btnCls.cloneNode(true));\n var wrap = _this.createElement('div', { className: CLS_WRAP, attrs: wrapAttrs });\n wrap.appendChild(tCont);\n if (_this.itemIndexArray === []) {\n _this.itemIndexArray.push(CLS_ITEM + _this.tabId + '_' + _this.lastIndex);\n }\n else {\n _this.itemIndexArray.splice((index + i), 0, CLS_ITEM + _this.tabId + '_' + _this.lastIndex);\n }\n var attrObj = {\n id: CLS_ITEM + _this.tabId + '_' + _this.lastIndex, 'data-id': item.id\n };\n var tItem = { htmlAttributes: attrObj, template: wrap };\n tItem.cssClass = ((item.cssClass !== undefined) ? item.cssClass : ' ') + ' ' + disabled + ' ' + hidden + ' '\n + ((css !== '') ? 'e-i' + pos : '') + ' ' + ((!txtEmpty) ? CLS_ICON : '');\n if (pos === 'top' || pos === 'bottom') {\n _this.element.classList.add('e-vertical-icon');\n }\n tItems.push(tItem);\n i++;\n });\n if (!this.isAdd) {\n spliceArray.forEach(function (spliceItemIndex) {\n _this.items.splice(spliceItemIndex, 1);\n });\n }\n if (this.isIconAlone) {\n this.element.classList.add(CLS_ICON_TAB);\n }\n else {\n this.element.classList.remove(CLS_ICON_TAB);\n }\n return tItems;\n };\n Tab.prototype.removeActiveClass = function () {\n var tabHeader = this.getTabHeader();\n if (tabHeader) {\n var tabItems = selectAll('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, tabHeader);\n [].slice.call(tabItems).forEach(function (node) { return node.classList.remove(CLS_ACTIVE); });\n [].slice.call(tabItems).forEach(function (node) { return node.firstElementChild.setAttribute('aria-selected', 'false'); });\n }\n };\n Tab.prototype.checkPopupOverflow = function (ele) {\n this.tbPop = select('.' + CLS_TB_POP, this.element);\n var popIcon = select('.e-hor-nav', this.element);\n var tbrItems = select('.' + CLS_TB_ITEMS, this.element);\n var lastChild = tbrItems.lastChild;\n var isOverflow = false;\n if (!this.isVertical() && ((this.enableRtl && ((popIcon.offsetLeft + popIcon.offsetWidth) > tbrItems.offsetLeft))\n || (!this.enableRtl && popIcon.offsetLeft < tbrItems.offsetWidth))) {\n isOverflow = true;\n }\n else if (this.isVertical() && (popIcon.offsetTop < lastChild.offsetTop + lastChild.offsetHeight)) {\n isOverflow = true;\n }\n if (isOverflow) {\n ele.classList.add(CLS_TB_POPUP);\n this.tbPop.insertBefore(ele, selectAll('.' + CLS_TB_POPUP, this.tbPop)[0]);\n }\n return true;\n };\n Tab.prototype.popupHandler = function (target) {\n var ripEle = target.querySelector('.e-ripple-element');\n if (!isNOU(ripEle)) {\n ripEle.outerHTML = '';\n target.querySelector('.' + CLS_WRAP).classList.remove('e-ripple');\n }\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var lastChild = this.tbItem[this.tbItem.length - 1];\n if (this.tbItem.length !== 0) {\n target.classList.remove(CLS_TB_POPUP);\n target.removeAttribute('style');\n this.tbItems.appendChild(target);\n this.actEleId = target.id;\n if (this.checkPopupOverflow(lastChild)) {\n var prevEle = this.tbItems.lastChild.previousElementSibling;\n this.checkPopupOverflow(prevEle);\n }\n this.isPopup = true;\n }\n return selectAll('.' + CLS_TB_ITEM, this.tbItems).length - 1;\n };\n Tab.prototype.setCloseButton = function (val) {\n var trg = select('.' + CLS_HEADER, this.element);\n if (val === true) {\n trg.classList.add(CLS_CLOSE_SHOW);\n }\n else {\n trg.classList.remove(CLS_CLOSE_SHOW);\n }\n this.tbObj.refreshOverflow();\n this.refreshActiveTabBorder();\n };\n Tab.prototype.prevCtnAnimation = function (prev, current) {\n var animation;\n var checkRTL = this.enableRtl || this.element.classList.contains(CLS_RTL);\n if (this.isPopup || prev <= current) {\n if (this.animation.previous.effect === 'SlideLeftIn') {\n animation = {\n name: 'SlideLeftOut',\n duration: this.animation.previous.duration, timingFunction: this.animation.previous.easing\n };\n }\n else {\n animation = null;\n }\n }\n else {\n if (this.animation.next.effect === 'SlideRightIn') {\n animation = {\n name: 'SlideRightOut',\n duration: this.animation.next.duration, timingFunction: this.animation.next.easing\n };\n }\n else {\n animation = null;\n }\n }\n return animation;\n };\n Tab.prototype.triggerPrevAnimation = function (oldCnt, prevIndex) {\n var _this = this;\n var animateObj = this.prevCtnAnimation(prevIndex, this.selectedItem);\n if (!isNOU(animateObj)) {\n animateObj.begin = function () {\n setStyle(oldCnt, { 'position': 'absolute' });\n oldCnt.classList.add(CLS_PROGRESS);\n oldCnt.classList.add('e-view');\n };\n animateObj.end = function () {\n oldCnt.style.display = 'none';\n oldCnt.classList.remove(CLS_ACTIVE);\n oldCnt.classList.remove(CLS_PROGRESS);\n oldCnt.classList.remove('e-view');\n setStyle(oldCnt, { 'display': '', 'position': '' });\n if (oldCnt.childNodes.length === 0 && !_this.isTemplate) {\n detach(oldCnt);\n }\n };\n new Animation(animateObj).animate(oldCnt);\n }\n else {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n };\n Tab.prototype.triggerAnimation = function (id, value) {\n var _this = this;\n var prevIndex = this.prevIndex;\n var oldCnt;\n var itemCollection = [].slice.call(this.element.querySelector('.' + CLS_CONTENT).children);\n itemCollection.forEach(function (item) {\n if (item.id === _this.prevActiveEle) {\n oldCnt = item;\n }\n });\n var prevEle = this.tbItem[prevIndex];\n var newCnt = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(oldCnt) && !isNOU(prevEle)) {\n var idNo = this.extIndex(prevEle.id);\n oldCnt = this.getTrgContent(this.cntEle, idNo);\n }\n if (!isNOU(newCnt)) {\n this.prevActiveEle = newCnt.id;\n }\n var isPrevent = isNOU(this.animation) || this.animation.next === {} || this.animation.previous === {}\n || isNOU(this.animation.next.effect) || isNOU(this.animation.previous.effect)\n || this.animation.previous.effect == 'None' || this.animation.next.effect == 'None';\n if (this.initRender || value === false || this.animation === {} || isPrevent) {\n if (oldCnt && oldCnt !== newCnt) {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n return;\n }\n var cnt = select('.' + CLS_CONTENT, this.element);\n var animateObj;\n if (this.prevIndex > this.selectedItem && !this.isPopup) {\n var openEff = this.animation.previous.effect;\n animateObj = {\n name: ((openEff === 'None') ? '' : ((openEff !== 'SlideLeftIn') ? openEff : 'SlideLeftIn')),\n duration: this.animation.previous.duration,\n timingFunction: this.animation.previous.easing\n };\n }\n else if (this.isPopup || this.prevIndex < this.selectedItem || this.prevIndex === this.selectedItem) {\n var clsEff = this.animation.next.effect;\n animateObj = {\n name: ((clsEff === 'None') ? '' : ((clsEff !== 'SlideRightIn') ? clsEff : 'SlideRightIn')),\n duration: this.animation.next.duration,\n timingFunction: this.animation.next.easing\n };\n }\n animateObj.progress = function () {\n cnt.classList.add(CLS_PROGRESS);\n _this.setActiveBorder();\n };\n animateObj.end = function () {\n cnt.classList.remove(CLS_PROGRESS);\n newCnt.classList.add(CLS_ACTIVE);\n };\n if (!this.initRender && !isNOU(oldCnt)) {\n this.triggerPrevAnimation(oldCnt, prevIndex);\n }\n this.isPopup = false;\n if (animateObj.name === '') {\n newCnt.classList.add(CLS_ACTIVE);\n }\n else {\n new Animation(animateObj).animate(newCnt);\n }\n };\n Tab.prototype.keyPressed = function (trg) {\n var trgParent = closest(trg, '.' + CLS_HEADER + ' .' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (!isNOU(this.popEle) && trg.classList.contains('e-hor-nav')) {\n (this.popEle.classList.contains(CLS_POPUP_OPEN)) ? this.popObj.hide(this.hide) : this.popObj.show(this.show);\n }\n else if (trg.classList.contains('e-scroll-nav')) {\n trg.click();\n }\n else {\n if (!isNOU(trgParent) && trgParent.classList.contains(CLS_ACTIVE) === false) {\n this.selectTab(trgIndex, null, true);\n if (!isNOU(this.popEle)) {\n this.popObj.hide(this.hide);\n }\n }\n }\n };\n Tab.prototype.getTabHeader = function () {\n if (isNOU(this.element)) {\n return undefined;\n }\n var headers = [].slice.call(this.element.children).filter(function (e) { return e.classList.contains(CLS_HEADER); });\n if (headers.length > 0) {\n return headers[0];\n }\n else {\n var wrap = [].slice.call(this.element.children).filter(function (e) { return !e.classList.contains(CLS_BLA_TEM); })[0];\n if (!wrap) {\n return undefined;\n }\n return [].slice.call(wrap.children).filter(function (e) { return e.classList.contains(CLS_HEADER); })[0];\n }\n };\n Tab.prototype.getEleIndex = function (item) {\n return Array.prototype.indexOf.call(selectAll('.' + CLS_TB_ITEM, this.getTabHeader()), item);\n };\n Tab.prototype.extIndex = function (id) {\n return id.replace(CLS_ITEM + this.tabId + '_', '');\n };\n Tab.prototype.expTemplateContent = function () {\n var _this = this;\n this.templateEle.forEach(function (eleStr) {\n if (!isNOU(_this.element.querySelector(eleStr))) {\n document.body.appendChild(_this.element.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Tab.prototype.templateCompile = function (ele, cnt, index) {\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content', index);\n if (tempEle.childNodes.length !== 0) {\n ele.appendChild(tempEle);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.compileElement = function (ele, val, prop, index) {\n var templateFn;\n if (typeof val === 'string') {\n val = val.trim();\n if (this.isVue) {\n templateFn = compile(SanitizeHtmlHelper.sanitize(val));\n }\n else {\n ele.innerHTML = SanitizeHtmlHelper.sanitize(val);\n }\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNOU(templateFn)) {\n templateFUN = templateFn({}, this, prop);\n }\n if (!isNOU(templateFn) && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Tab.prototype.headerTextCompile = function (element, text, index) {\n this.compileElement(element, text, 'headerTemplate', index);\n };\n Tab.prototype.getContent = function (ele, cnt, callType, index) {\n var eleStr;\n cnt = isNOU(cnt) ? \"\" : cnt;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n if (callType === 'clone') {\n ele.appendChild(eleVal.cloneNode(true));\n }\n else {\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n ele.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n };\n Tab.prototype.getTrgContent = function (cntEle, no) {\n var ele;\n if (this.element.classList.contains(CLS_NEST)) {\n ele = select('.' + CLS_NEST + '> .' + CLS_CONTENT + ' > #' + CLS_CONTENT + this.tabId + '_' + no, this.element);\n }\n else {\n ele = this.findEle(cntEle.children, CLS_CONTENT + this.tabId + '_' + no);\n }\n return ele;\n };\n Tab.prototype.findEle = function (items, key) {\n var ele;\n for (var i = 0; i < items.length; i++) {\n if (items[i].id === key) {\n ele = items[i];\n break;\n }\n }\n return ele;\n };\n Tab.prototype.isVertical = function () {\n var isVertical = (this.headerPlacement === 'Left' || this.headerPlacement === 'Right') ? true : false;\n this.scrCntClass = (isVertical) ? CLS_VSCRCNT : CLS_HSCRCNT;\n return isVertical;\n };\n Tab.prototype.addVerticalClass = function () {\n if (this.isVertical()) {\n var tbPos = (this.headerPlacement === 'Left') ? CLS_VLEFT : CLS_VRIGHT;\n addClass([this.hdrEle], [CLS_VERTICAL, tbPos]);\n if (!this.element.classList.contains(CLS_NEST)) {\n addClass([this.element], [CLS_VTAB, tbPos]);\n }\n else {\n addClass([this.hdrEle], [CLS_VTAB, tbPos]);\n }\n }\n if (this.headerPlacement === 'Bottom') {\n addClass([this.hdrEle], [CLS_HBOTTOM]);\n }\n };\n Tab.prototype.updatePopAnimationConfig = function () {\n this.show = { name: (this.isVertical() ? 'FadeIn' : 'SlideDown'), duration: 100 };\n this.hide = { name: (this.isVertical() ? 'FadeOut' : 'SlideUp'), duration: 100 };\n };\n Tab.prototype.changeOrientation = function (place) {\n this.setOrientation(place, this.hdrEle);\n var activeTab = this.hdrEle.querySelector('.' + CLS_ACTIVE);\n var isVertical = this.hdrEle.classList.contains(CLS_VERTICAL) ? true : false;\n removeClass([this.element], [CLS_VTAB]);\n removeClass([this.hdrEle], [CLS_VERTICAL, CLS_VLEFT, CLS_VRIGHT]);\n if (isVertical !== this.isVertical()) {\n this.changeToolbarOrientation();\n if (!isNOU(activeTab) && activeTab.classList.contains(CLS_TB_POPUP)) {\n this.popupHandler(activeTab);\n }\n }\n this.addVerticalClass();\n this.setActiveBorder();\n this.focusItem();\n };\n Tab.prototype.focusItem = function () {\n var curActItem = select(' #' + CLS_ITEM + this.tabId + '_' + this.selectedItem, this.hdrEle);\n if (!isNOU(curActItem)) {\n curActItem.firstElementChild.focus();\n }\n };\n Tab.prototype.changeToolbarOrientation = function () {\n this.tbObj.setProperties({ height: (this.isVertical() ? '100%' : 'auto'), width: (this.isVertical() ? 'auto' : '100%') }, true);\n this.tbObj.changeOrientation();\n this.updatePopAnimationConfig();\n };\n Tab.prototype.setOrientation = function (place, ele) {\n var headerPos = Array.prototype.indexOf.call(this.element.children, ele);\n var contentPos = Array.prototype.indexOf.call(this.element.children, this.element.querySelector('.' + CLS_CONTENT));\n if (place === 'Bottom' && (contentPos > headerPos)) {\n this.element.appendChild(ele);\n }\n else {\n removeClass([ele], [CLS_HBOTTOM]);\n this.element.insertBefore(ele, select('.' + CLS_CONTENT, this.element));\n }\n };\n Tab.prototype.setCssClass = function (ele, cls, val) {\n if (cls === '') {\n return;\n }\n var list = cls.split(' ');\n for (var i = 0; i < list.length; i++) {\n if (val) {\n ele.classList.add(list[i]);\n }\n else {\n ele.classList.remove(list[i]);\n }\n }\n };\n Tab.prototype.setContentHeight = function (val) {\n if (this.element.classList.contains(CLS_FILL)) {\n removeClass([this.element], [CLS_FILL]);\n }\n if (isNOU(this.cntEle)) {\n return;\n }\n var hdrEle = this.getTabHeader();\n if (this.heightAdjustMode === 'None') {\n if (this.height === 'auto') {\n return;\n }\n else {\n if (!this.isVertical()) {\n setStyle(this.cntEle, { 'height': (this.element.clientHeight - hdrEle.offsetHeight) + 'px' });\n }\n }\n }\n else if (this.heightAdjustMode === 'Fill') {\n addClass([this.element], [CLS_FILL]);\n setStyle(this.element, { 'height': '100%' });\n this.cntEle.style.height = 'calc(100% - ' + this.hdrEle.offsetHeight + 'px)';\n }\n else if (this.heightAdjustMode === 'Auto') {\n if (this.isTemplate === true) {\n var cnt = selectAll('.' + CLS_CONTENT + ' > .' + CLS_ITEM, this.element);\n for (var i = 0; i < cnt.length; i++) {\n cnt[i].setAttribute('style', 'display:block; visibility: visible');\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(cnt[i]));\n cnt[i].style.removeProperty('display');\n cnt[i].style.removeProperty('visibility');\n }\n }\n else {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n if (val === true) {\n this.cntEle.appendChild(this.createElement('div', {\n id: (CLS_CONTENT + this.tabId + '_' + 0), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + 0 }\n }));\n }\n var ele = this.cntEle.children.item(0);\n for (var i = 0; i < this.items.length; i++) {\n this.getContent(ele, this.items[i].content, 'clone', i);\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(ele));\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n }\n if (this.isReact) {\n this.clearTemplate(['content']);\n }\n this.templateEle = [];\n this.getContent(ele, this.items[0].content, 'render', 0);\n if (this.prevIndex !== this.selectedItem) {\n ele.classList.remove(CLS_ACTIVE);\n }\n }\n setStyle(this.cntEle, { 'height': this.maxHeight + 'px' });\n }\n else {\n setStyle(this.cntEle, { 'height': 'auto' });\n }\n };\n Tab.prototype.getHeight = function (ele) {\n var cs = window.getComputedStyle(ele);\n return ele.offsetHeight + parseFloat(cs.getPropertyValue('padding-top')) + parseFloat(cs.getPropertyValue('padding-bottom')) +\n parseFloat(cs.getPropertyValue('margin-top')) + parseFloat(cs.getPropertyValue('margin-bottom'));\n };\n Tab.prototype.setActiveBorder = function () {\n var trgHdrEle = this.getTabHeader();\n var trg = select('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, trgHdrEle);\n if (isNOU(trg)) {\n return;\n }\n if (!this.reorderActiveTab) {\n if (trg.classList.contains(CLS_TB_POPUP) && !this.bdrLine.classList.contains(CLS_HIDDEN)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n if (trgHdrEle && !trgHdrEle.classList.contains(CLS_REORDER_ACTIVE_ITEM)) {\n trgHdrEle.classList.add(CLS_REORDER_ACTIVE_ITEM);\n }\n }\n else if (trgHdrEle) {\n trgHdrEle.classList.remove(CLS_REORDER_ACTIVE_ITEM);\n }\n var root = closest(trg, '.' + CLS_TAB);\n if (this.element !== root) {\n return;\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, trgHdrEle);\n var bar = select('.' + CLS_INDICATOR, trgHdrEle);\n var scrollCnt = select('.' + CLS_TB_ITEMS + ' .' + this.scrCntClass, trgHdrEle);\n if (this.isVertical()) {\n setStyle(bar, { 'left': '', 'right': '' });\n var tbHeight = (isNOU(scrollCnt)) ? this.tbItems.offsetHeight : scrollCnt.offsetHeight;\n if (tbHeight !== 0) {\n setStyle(bar, { 'top': trg.offsetTop + 'px', 'height': trg.offsetHeight + 'px' });\n }\n else {\n setStyle(bar, { 'top': 0, 'height': 0 });\n }\n }\n else {\n if (this.overflowMode === 'MultiRow') {\n var top_1 = this.headerPlacement === 'Bottom' ? trg.offsetTop : trg.offsetHeight + trg.offsetTop;\n setStyle(bar, { 'top': top_1 + 'px', 'height': '' });\n }\n else {\n setStyle(bar, { 'top': '', 'height': '' });\n }\n var tbWidth = (isNOU(scrollCnt)) ? this.tbItems.offsetWidth : scrollCnt.offsetWidth;\n if (tbWidth !== 0) {\n setStyle(bar, { 'left': trg.offsetLeft + 'px', 'right': tbWidth - (trg.offsetLeft + trg.offsetWidth) + 'px' });\n }\n else {\n setStyle(bar, { 'left': 'auto', 'right': 'auto' });\n }\n }\n if (!isNOU(this.bdrLine) && !trg.classList.contains(CLS_TB_POPUP)) {\n this.bdrLine.classList.remove(CLS_HIDDEN);\n }\n };\n Tab.prototype.setActive = function (value, skipDataBind, isInteracted) {\n if (skipDataBind === void 0) { skipDataBind = false; }\n if (isInteracted === void 0) { isInteracted = false; }\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n var trg = this.tbItem[value];\n if (value < 0 || isNaN(value) || this.tbItem.length === 0) {\n return;\n }\n if (value >= 0 && !skipDataBind) {\n this.allowServerDataBinding = false;\n this.setProperties({ selectedItem: value }, true);\n this.allowServerDataBinding = true;\n if (!this.initRender) {\n this.serverDataBind();\n }\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n this.setActiveBorder();\n return;\n }\n if (!this.isTemplate) {\n attributes(trg.firstElementChild, { 'aria-controls': CLS_CONTENT + this.tabId + '_' + value });\n }\n var id = trg.id;\n this.removeActiveClass();\n trg.classList.add(CLS_ACTIVE);\n trg.firstElementChild.setAttribute('aria-selected', 'true');\n var no = Number(this.extIndex(id));\n if (isNOU(this.prevActiveEle)) {\n this.prevActiveEle = CLS_CONTENT + this.tabId + '_' + no;\n }\n if (this.isTemplate) {\n if (select('.' + CLS_CONTENT, this.element).children.length > 0) {\n var trg_1 = this.findEle(select('.' + CLS_CONTENT, this.element).children, CLS_CONTENT + this.tabId + '_' + no);\n if (!isNOU(trg_1)) {\n trg_1.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n }\n else {\n this.cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n var item = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(item)) {\n this.cntEle.appendChild(this.createElement('div', {\n id: CLS_CONTENT + this.tabId + '_' + this.extIndex(id), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + this.extIndex(id) }\n }));\n var eleTrg = this.getTrgContent(this.cntEle, this.extIndex(id));\n var itemIndex = Array.prototype.indexOf.call(this.itemIndexArray, id);\n this.getContent(eleTrg, this.items[itemIndex].content, 'render', itemIndex);\n }\n else {\n item.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n this.setActiveBorder();\n this.refreshItemVisibility(trg);\n if (!this.initRender && !skipDataBind) {\n var eventArg = {\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: trg,\n selectedIndex: value,\n selectedContent: select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content),\n isSwiped: this.isSwiped,\n isInteracted: isInteracted,\n preventFocus: false\n };\n this.trigger('selected', eventArg, function (selectEventArgs) {\n if (!selectEventArgs.preventFocus) {\n trg.firstElementChild.focus();\n }\n });\n }\n };\n Tab.prototype.setItems = function (items) {\n this.isReplace = true;\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.tbObj.items = this.parseObject(items, 0);\n this.tbObj.dataBind();\n this.isReplace = false;\n };\n Tab.prototype.setRTL = function (value) {\n this.tbObj.enableRtl = value;\n this.tbObj.dataBind();\n this.setCssClass(this.element, CLS_RTL, value);\n this.refreshActiveBorder();\n };\n Tab.prototype.refreshActiveBorder = function () {\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.setActiveBorder();\n };\n Tab.prototype.showPopup = function (config) {\n var tbPop = select('.e-popup.e-toolbar-pop', this.hdrEle);\n if (tbPop.classList.contains('e-popup-close')) {\n var tbPopObj = (tbPop && tbPop.ej2_instances[0]);\n tbPopObj.position.X = (this.headerPlacement === 'Left') ? 'left' : 'right';\n tbPopObj.dataBind();\n tbPopObj.show(config);\n }\n };\n Tab.prototype.bindDraggable = function () {\n var _this = this;\n if (this.allowDragAndDrop) {\n var tabHeader = this.element.querySelector('.' + CLS_HEADER);\n if (tabHeader) {\n var items = Array.prototype.slice.call(tabHeader.querySelectorAll('.' + CLS_TB_ITEM));\n items.forEach(function (element) {\n _this.initializeDrag(element);\n });\n }\n }\n };\n Tab.prototype.wireEvents = function () {\n this.bindDraggable();\n window.addEventListener('resize', this.resizeContext);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'keydown', this.spaceKeyDown, this);\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n this.keyModule = new KeyboardEvents(this.element, { keyAction: this.keyHandler.bind(this), keyConfigs: this.keyConfigs });\n this.tabKeyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyHandler.bind(this),\n keyConfigs: { openPopup: 'shift+f10', tab: 'tab', shiftTab: 'shift+tab' },\n eventName: 'keydown'\n });\n };\n Tab.prototype.unWireEvents = function () {\n if (!isNOU(this.keyModule)) {\n this.keyModule.destroy();\n }\n if (!isNOU(this.tabKeyModule)) {\n this.tabKeyModule.destroy();\n }\n if (!isNOU(this.cntEle) && !isNOU(this.touchModule)) {\n this.touchModule.destroy();\n this.touchModule = null;\n }\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'keydown', this.spaceKeyDown);\n this.element.classList.remove(CLS_RTL);\n this.element.classList.remove(CLS_FOCUS);\n };\n Tab.prototype.clickHandler = function (args) {\n this.element.classList.remove(CLS_FOCUS);\n var trg = args.originalEvent.target;\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (trg.classList.contains(CLS_ICON_CLOSE)) {\n this.removeTab(trgIndex);\n }\n else if (this.isVertical() && closest(trg, '.' + CLS_HOR_NAV)) {\n this.showPopup(this.show);\n }\n else {\n this.isPopup = false;\n if (!isNOU(trgParent) && (trgIndex !== this.selectedItem)) {\n this.selectTab(trgIndex, args.originalEvent, true);\n }\n }\n };\n Tab.prototype.swipeHandler = function (e) {\n if (e.velocity < 3 && isNOU(e.originalEvent.changedTouches)) {\n return;\n }\n if (this.isNested) {\n this.element.setAttribute('data-swipe', 'true');\n }\n var nestedTab = this.element.querySelector('[data-swipe=\"true\"]');\n if (nestedTab) {\n nestedTab.removeAttribute('data-swipe');\n return;\n }\n this.isSwiped = true;\n if (e.swipeDirection === 'Right' && this.selectedItem !== 0) {\n for (var k = this.selectedItem - 1; k >= 0; k--) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.selectTab(k, null, true);\n break;\n }\n }\n }\n else if (e.swipeDirection === 'Left' && (this.selectedItem !== selectAll('.' + CLS_TB_ITEM, this.element).length - 1)) {\n for (var i = this.selectedItem + 1; i < this.tbItem.length; i++) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.selectTab(i, null, true);\n break;\n }\n }\n }\n this.isSwiped = false;\n };\n Tab.prototype.spaceKeyDown = function (e) {\n if ((e.keyCode === 32 && e.which === 32) || (e.keyCode === 35 && e.which === 35)) {\n var clstHead = closest(e.target, '.' + CLS_HEADER);\n if (!isNOU(clstHead)) {\n e.preventDefault();\n }\n }\n };\n Tab.prototype.keyHandler = function (e) {\n if (this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n this.element.classList.add(CLS_FOCUS);\n var trg = e.target;\n var tabHeader = this.getTabHeader();\n var actEle = select('.' + CLS_ACTIVE, tabHeader);\n this.popEle = select('.' + CLS_TB_POP, tabHeader);\n if (!isNOU(this.popEle)) {\n this.popObj = this.popEle.ej2_instances[0];\n }\n var item = closest(document.activeElement, '.' + CLS_TB_ITEM);\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n switch (e.action) {\n case 'space':\n case 'enter':\n if (trg.parentElement.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (e.action === 'enter' && trg.classList.contains('e-hor-nav')) {\n this.showPopup(this.show);\n break;\n }\n this.keyPressed(trg);\n break;\n case 'tab':\n case 'shiftTab':\n if (trg.classList.contains(CLS_WRAP)\n && closest(trg, '.' + CLS_TB_ITEM).classList.contains(CLS_ACTIVE) === false) {\n trg.setAttribute('tabindex', trg.getAttribute('data-tabindex'));\n }\n if (this.popObj && isVisible(this.popObj.element)) {\n this.popObj.hide(this.hide);\n }\n if (!isNOU(actEle) && actEle.children.item(0).getAttribute('tabindex') === '-1') {\n actEle.children.item(0).setAttribute('tabindex', '0');\n }\n break;\n case 'moveLeft':\n case 'moveRight':\n if (!isNOU(item)) {\n this.refreshItemVisibility(item);\n }\n break;\n case 'openPopup':\n e.preventDefault();\n if (!isNOU(this.popEle) && this.popEle.classList.contains(CLS_POPUP_CLOSE)) {\n this.popObj.show(this.show);\n }\n break;\n case 'delete':\n if (this.showCloseButton === true && !isNOU(trgParent)) {\n var nxtSib = trgParent.nextSibling;\n if (!isNOU(nxtSib) && nxtSib.classList.contains(CLS_TB_ITEM)) {\n nxtSib.firstElementChild.focus();\n }\n this.removeTab(this.getEleIndex(trgParent));\n }\n this.setActiveBorder();\n break;\n }\n };\n Tab.prototype.refreshItemVisibility = function (target) {\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!this.isVertical() && !isNOU(scrCnt)) {\n var scrBar = select('.e-hscroll-bar', this.tbItems);\n scrBar.removeAttribute('tabindex');\n var scrStart = scrBar.scrollLeft;\n var scrEnd = scrStart + scrBar.offsetWidth;\n var eleStart = target.offsetLeft;\n var eleWidth = target.offsetWidth;\n var eleEnd = target.offsetLeft + target.offsetWidth;\n if ((scrStart < eleStart) && (scrEnd < eleEnd)) {\n var eleViewRange = scrEnd - eleStart;\n scrBar.scrollLeft = scrStart + (eleWidth - eleViewRange);\n }\n else {\n if ((scrStart > eleStart) && (scrEnd > eleEnd)) {\n var eleViewRange = eleEnd - scrStart;\n scrBar.scrollLeft = scrStart - (eleWidth - eleViewRange);\n }\n }\n }\n else {\n return;\n }\n };\n Tab.prototype.getIndexFromEle = function (id) {\n return parseInt(id.substring(id.lastIndexOf('_') + 1), 10);\n };\n Tab.prototype.hoverHandler = function (e) {\n var trg = e.target;\n if (!isNOU(trg.classList) && trg.classList.contains(CLS_ICON_CLOSE)) {\n trg.setAttribute('title', new L10n('tab', { closeButtonTitle: this.title }, this.locale).getConstant('closeButtonTitle'));\n }\n };\n Tab.prototype.evalOnPropertyChangeItems = function (newProp, oldProp) {\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var i = 0; i < changedProp.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[i], 10);\n var properties = Object.keys(newProp.items[index]);\n for (var j = 0; j < properties.length; j++) {\n var oldVal = Object(oldProp.items[index])[properties[j]];\n var newVal = Object(newProp.items[index])[properties[j]];\n var hdr = this.element.querySelectorAll('.' + CLS_TB_ITEM)[index];\n var itemIndex = void 0;\n if (hdr && !isNOU(hdr.id) && hdr.id !== '') {\n itemIndex = this.getIndexFromEle(hdr.id);\n }\n else {\n itemIndex = index;\n }\n var hdrItem = select('.' + CLS_TB_ITEMS + ' #' + CLS_ITEM + this.tabId + '_' + itemIndex, this.element);\n var cntItem = select('.' + CLS_CONTENT + ' #' + CLS_CONTENT + this.tabId + '_' + itemIndex, this.element);\n if (properties[j] === 'header' || properties[j] === 'headerTemplate') {\n var icon = (isNOU(this.items[index].header) ||\n isNOU(this.items[index].header.iconCss)) ? '' : this.items[index].header.iconCss;\n var textVal = this.items[index].headerTemplate || this.items[index].header.text;\n if (properties[j] === 'headerTemplate') {\n this.clearTabTemplate(hdrItem, properties[j], CLS_TB_ITEM);\n }\n if ((textVal === '') && (icon === '')) {\n this.removeTab(index);\n }\n else {\n this.tbId = hdr.id;\n var arr = [];\n arr.push(this.items[index]);\n this.items.splice(index, 1);\n this.itemIndexArray.splice(index, 1);\n this.tbObj.items.splice(index, 1);\n var isHiddenEle = hdrItem.classList.contains(CLS_HIDDEN);\n detach(hdrItem);\n this.isReplace = true;\n this.addTab(arr, index);\n if (isHiddenEle) {\n this.hideTab(index);\n }\n this.isReplace = false;\n }\n }\n if (properties[j] === 'content' && !isNOU(cntItem)) {\n var strVal = typeof newVal === 'string' || isNOU(newVal.innerHTML);\n if (strVal && (newVal[0] === '.' || newVal[0] === '#') && newVal.length) {\n var eleVal = document.querySelector(newVal);\n cntItem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else if (newVal === '' && oldVal[0] === '#') {\n document.body.appendChild(this.element.querySelector(oldVal)).style.display = 'none';\n cntItem.innerHTML = newVal;\n }\n else if (this.isAngular || this.isReact) {\n this.clearTabTemplate(cntItem, properties[j], CLS_ITEM);\n cntItem.innerHTML = '';\n this.templateCompile(cntItem, newVal, index);\n }\n else if (typeof newVal !== 'function') {\n cntItem.innerHTML = newVal;\n }\n }\n if (properties[j] === 'cssClass') {\n if (!isNOU(hdrItem)) {\n hdrItem.classList.remove(oldVal);\n hdrItem.classList.add(newVal);\n }\n if (!isNOU(cntItem)) {\n cntItem.classList.remove(oldVal);\n cntItem.classList.add(newVal);\n }\n }\n if (properties[j] === 'disabled') {\n this.enableTab(index, ((newVal === true) ? false : true));\n }\n if (properties[j] === 'visible') {\n this.hideTab(index, ((newVal === true) ? false : true));\n }\n }\n }\n }\n else {\n this.lastIndex = 0;\n if (isNOU(this.tbObj)) {\n this.reRenderItems();\n }\n else {\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.setItems(newProp.items);\n if (this.templateEle.length > 0) {\n this.expTemplateContent();\n }\n this.templateEle = [];\n var selectElement = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n while (selectElement.firstElementChild) {\n detach(selectElement.firstElementChild);\n }\n this.select(this.selectedItem);\n this.draggableItems = [];\n this.bindDraggable();\n }\n }\n };\n Tab.prototype.clearTabTemplate = function (templateEle, templateName, className) {\n if (!this.clearTemplates) {\n return;\n }\n if (this.registeredTemplate && this.registeredTemplate[templateName]) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[templateName].length; index++) {\n var registeredItem = registeredTemplates[templateName][index].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], [registeredTemplates[templateName][index]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[index];\n var closestItem = closest(portalItem.containerInfo, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], index);\n break;\n }\n }\n }\n };\n Tab.prototype.initializeDrag = function (target) {\n var _this = this;\n var dragObj = new Draggable(target, {\n dragArea: this.dragArea,\n dragTarget: '.' + CLS_TB_ITEM,\n clone: true,\n helper: this.helper.bind(this),\n dragStart: this.itemDragStart.bind(this),\n drag: function (e) {\n var dragIndex = _this.getEleIndex(_this.dragItem);\n var dropIndex;\n var dropItem;\n var dragArgs = {\n draggedItem: _this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: e.target.closest('.' + CLS_TB_ITEM),\n clonedElement: _this.cloneElement,\n index: dragIndex\n };\n if (!isNOU(e.target.closest('.' + CLS_TAB)) && !e.target.closest('.' + CLS_TAB).isEqualNode(_this.element) &&\n _this.dragArea !== '.' + CLS_HEADER) {\n _this.trigger('dragging', dragArgs);\n }\n else {\n if (!(e.target.closest(_this.dragArea)) && _this.overflowMode !== 'Popup') {\n document.body.style.cursor = 'not-allowed';\n addClass([_this.cloneElement], CLS_HIDDEN);\n if (_this.dragItem.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.dragItem], CLS_HIDDEN);\n }\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n }\n else {\n document.body.style.cursor = '';\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n if (_this.cloneElement.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.cloneElement], CLS_HIDDEN);\n }\n }\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n var scrollRightNavEle = _this.element.querySelector('.e-scroll-right-nav');\n var scrollLeftNavEle = _this.element.querySelector('.e-scroll-left-nav');\n var hscrollBar = _this.element.querySelector('.e-hscroll-bar');\n if (!isNOU(scrollRightNavEle) && Math.abs((scrollRightNavEle.offsetWidth / 2) +\n scrollRightNavEle.offsetLeft) > _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n hscrollBar.scrollLeft -= 10;\n }\n if (!isNOU(scrollLeftNavEle) && Math.abs((scrollLeftNavEle.offsetLeft + scrollLeftNavEle.offsetWidth) -\n _this.cloneElement.offsetLeft) > (scrollLeftNavEle.offsetWidth / 2)) {\n hscrollBar.scrollLeft += 10;\n }\n }\n _this.cloneElement.style.pointerEvents = 'none';\n dropItem = closest(e.target, '.' + CLS_TB_ITEM + '.e-draggable');\n var scrollContentWidth = 0;\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n scrollContentWidth = _this.element.querySelector('.e-hscroll-content').offsetWidth;\n }\n if (dropItem != null && !dropItem.isSameNode(_this.dragItem) &&\n dropItem.closest('.' + CLS_TAB).isSameNode(_this.dragItem.closest('.' + CLS_TAB))) {\n dropIndex = _this.getEleIndex(dropItem);\n if (dropIndex < dragIndex &&\n (Math.abs((dropItem.offsetLeft + dropItem.offsetWidth) -\n _this.cloneElement.offsetLeft) > (dropItem.offsetWidth / 2))) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n if (dropIndex > dragIndex &&\n (Math.abs(dropItem.offsetWidth / 2) + dropItem.offsetLeft -\n scrollContentWidth) < _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n }\n _this.droppedIndex = _this.getEleIndex(_this.dragItem);\n _this.trigger('dragging', dragArgs);\n }\n },\n dragStop: this.itemDragStop.bind(this)\n });\n this.draggableItems.push(dragObj);\n };\n Tab.prototype.helper = function (e) {\n this.cloneElement = this.createElement('div');\n if (e.element) {\n this.cloneElement = (e.element.cloneNode(true));\n addClass([this.cloneElement], 'e-tab-clone-element');\n if (this.element.querySelector('.' + CLS_HEADER).classList.contains(CLS_CLOSE_SHOW)) {\n addClass([this.cloneElement], CLS_CLOSE_SHOW);\n }\n removeClass([this.cloneElement.querySelector('.' + CLS_WRAP)], 'e-ripple');\n if (!isNOU(this.cloneElement.querySelector('.e-ripple-element'))) {\n remove(this.cloneElement.querySelector('.e-ripple-element'));\n }\n document.body.appendChild(this.cloneElement);\n }\n return this.cloneElement;\n };\n Tab.prototype.itemDragStart = function (e) {\n var _this = this;\n this.draggingItems = this.items.map(function (x) { return x; });\n this.dragItem = e.element;\n var dragArgs = {\n draggedItem: e.element,\n event: e.event,\n target: e.target,\n droppedItem: null,\n index: this.getEleIndex(this.dragItem),\n clonedElement: this.cloneElement,\n cancel: false\n };\n this.trigger('onDragStart', dragArgs, function (tabitemDragArgs) {\n if (tabitemDragArgs.cancel) {\n var dragObj = e.element.ej2_instances[0];\n if (!isNullOrUndefined(dragObj)) {\n dragObj.intDestroy(e.event);\n }\n detach(_this.cloneElement);\n }\n else {\n _this.removeActiveClass();\n addClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n }\n });\n };\n Tab.prototype.dragAction = function (dropItem, dragsIndex, dropIndex) {\n if (this.items.length > 0) {\n var item = this.draggingItems[dragsIndex];\n this.draggingItems.splice(dragsIndex, 1);\n this.draggingItems.splice(dropIndex, 0, item);\n }\n if (this.overflowMode === 'MultiRow') {\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n if (dragsIndex > dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n if (dropItem.isSameNode(dropItem.parentElement.lastChild)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(dropItem.parentElement.lastChild, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement.lastChild), this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n var lastEle = (dropItem.parentElement).lastChild;\n if (dropItem.isSameNode(lastEle)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(lastEle, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n if (dragsIndex < dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n this.dragItem.parentElement.appendChild(dropItem.parentElement.firstElementChild);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextSibling);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n }\n };\n Tab.prototype.itemDragStop = function (e) {\n var _this = this;\n detach(this.cloneElement);\n this.cloneElement = null;\n this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n document.body.style.cursor = '';\n var dragStopArgs = {\n draggedItem: this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: this.tbItem[this.droppedIndex],\n clonedElement: null,\n index: this.droppedIndex,\n cancel: false\n };\n this.trigger('dragged', dragStopArgs, function (tabItemDropArgs) {\n if (tabItemDropArgs.cancel) {\n _this.refresh();\n }\n else {\n if (_this.items.length > 0 && _this.draggingItems.length > 0) {\n _this.items = _this.draggingItems;\n _this.selectedItem = _this.droppedIndex;\n _this.refresh();\n }\n else {\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = '';\n removeClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.selectTab(_this.droppedIndex, null, true);\n }\n }\n });\n this.dragItem = null;\n };\n /**\n * Enables or disables the specified Tab item. On passing value as `false`, the item will be disabled.\n *\n * @param {number} index - Index value of target Tab item.\n * @param {boolean} value - Boolean value that determines whether the command should be enabled or disabled.\n * By default, isEnable is true.\n * @returns {void}.\n */\n Tab.prototype.enableTab = function (index, value) {\n var tbItems = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(tbItems)) {\n return;\n }\n if (value === true) {\n tbItems.classList.remove(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.setAttribute('tabindex', tbItems.firstElementChild.getAttribute('data-tabindex'));\n }\n else {\n tbItems.classList.add(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.removeAttribute('tabindex');\n if (tbItems.classList.contains(CLS_ACTIVE)) {\n this.select(index + 1);\n }\n }\n if (!isNOU(this.items[index])) {\n this.items[index].disabled = !value;\n this.dataBind();\n }\n tbItems.firstElementChild.setAttribute('aria-disabled', (value === true) ? 'false' : 'true');\n };\n /**\n * Adds new items to the Tab that accepts an array as Tab items.\n *\n * @param {TabItemModel[]} items - An array of item that is added to the Tab.\n * @param {number} index - Number value that determines where the items to be added. By default, index is 0.\n * @returns {void}.\n */\n Tab.prototype.addTab = function (items, index) {\n var _this = this;\n var addArgs = { addedItems: items, cancel: false };\n if (!this.isReplace) {\n this.trigger('adding', addArgs, function (tabAddingArgs) {\n if (!tabAddingArgs.cancel) {\n _this.addingTabContent(items, index);\n }\n });\n }\n else {\n this.addingTabContent(items, index);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.addingTabContent = function (items, index) {\n var _this = this;\n var lastEleIndex = 0;\n this.hdrEle = select('.' + CLS_HEADER, this.element);\n if (isNOU(this.hdrEle)) {\n this.items = items;\n this.reRenderItems();\n this.bindDraggable();\n }\n else {\n var itemsCount = selectAll('.e-tab-header .' + CLS_TB_ITEM, this.element).length;\n if (itemsCount !== 0) {\n lastEleIndex = this.lastIndex + 1;\n }\n if (isNOU(index)) {\n index = itemsCount - 1;\n }\n if (itemsCount < index || index < 0 || isNaN(index)) {\n return;\n }\n if (itemsCount === 0 && !isNOU(this.hdrEle)) {\n this.hdrEle.style.display = '';\n }\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.isAdd = true;\n var tabItems_2 = this.parseObject(items, index);\n this.isAdd = false;\n var i_1 = 0;\n var textValue_1;\n items.forEach(function (item, place) {\n textValue_1 = item.headerTemplate || item.header.text;\n if (!(isNOU(item.headerTemplate || item.header) || isNOU(textValue_1) ||\n (textValue_1.length === 0) && !isNOU(item.header) && isNOU(item.header.iconCss))) {\n if (tabItems_2[place]) {\n if (isNOU(item.id)) {\n item.id = CLS_ITEM + _this.tabId + '_' + TABITEMPREFIX + (lastEleIndex + place).toString();\n }\n tabItems_2[place].htmlAttributes['data-id'] = item.id;\n }\n _this.items.splice((index + i_1), 0, item);\n i_1++;\n }\n if (_this.isTemplate && !isNOU(item.header) && !isNOU(item.header.text)) {\n var no = lastEleIndex + place;\n var ele = _this.createElement('div', {\n id: CLS_CONTENT + _this.tabId + '_' + no, className: CLS_ITEM,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + '_' + no }\n });\n _this.cntEle.insertBefore(ele, _this.cntEle.children[(index + place)]);\n var eleTrg = _this.getTrgContent(_this.cntEle, no.toString());\n _this.getContent(eleTrg, item.content, 'render', index);\n }\n });\n this.tbObj.addItems(tabItems_2, index);\n if (!this.isReplace) {\n this.trigger('added', { addedItems: items });\n }\n if (this.selectedItem === index) {\n this.select(index);\n }\n else {\n this.setActiveBorder();\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n }\n this.bindDraggable();\n }\n };\n /**\n * Removes the items in the Tab from the specified index.\n *\n * @param {number} index - Index of target item that is going to be removed.\n * @returns {void}.\n */\n Tab.prototype.removeTab = function (index) {\n var _this = this;\n var trg = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(trg)) {\n return;\n }\n var removeArgs = { removedItem: trg, removedIndex: index, cancel: false };\n this.trigger('removing', removeArgs, function (tabRemovingArgs) {\n if (!tabRemovingArgs.cancel) {\n var header = select('#' + CLS_ITEM + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_TB_ITEMS, _this.element));\n if (!isNOU(header)) {\n _this.clearTabTemplate(header, 'headerTemplate', CLS_TB_ITEM);\n }\n _this.tbObj.removeItems(index);\n if (_this.allowDragAndDrop && (index !== Array.prototype.indexOf.call(_this.itemIndexArray, trg.id))) {\n index = Array.prototype.indexOf.call(_this.itemIndexArray, trg.id);\n }\n var targetEleIndex = _this.itemIndexArray.indexOf(trg.id);\n _this.items.splice(targetEleIndex, 1);\n _this.itemIndexArray.splice(targetEleIndex, 1);\n _this.refreshActiveBorder();\n var cntTrg = select('#' + CLS_CONTENT + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_CONTENT, _this.element));\n if (!isNOU(cntTrg)) {\n _this.clearTabTemplate(cntTrg, 'content', CLS_ITEM);\n detach(cntTrg);\n }\n _this.trigger('removed', tabRemovingArgs);\n if (_this.draggableItems && _this.draggableItems.length > 0) {\n _this.draggableItems[index].destroy();\n _this.draggableItems[index] = null;\n _this.draggableItems.splice(index, 1);\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n index = (index > selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_TB_POPUP + ')', _this.element).length - 1) ? index - 1 : index;\n _this.enableAnimation = false;\n _this.selectedItem = index;\n _this.select(index);\n }\n else if (index !== _this.selectedItem) {\n if (index < _this.selectedItem) {\n index = _this.itemIndexArray.indexOf(_this.tbItem[_this.selectedItem].id);\n _this.setProperties({ selectedItem: index > -1 ? index : _this.selectedItem }, true);\n _this.prevIndex = _this.selectedItem;\n }\n _this.tbItem = selectAll('.' + CLS_TB_ITEM, _this.getTabHeader());\n }\n if (selectAll('.' + CLS_TB_ITEM, _this.element).length === 0) {\n _this.hdrEle.style.display = 'none';\n }\n _this.enableAnimation = true;\n }\n });\n };\n /**\n * Shows or hides the Tab that is in the specified index.\n *\n * @param {number} index - Index value of target item.\n * @param {boolean} value - Based on this Boolean value, item will be hide (false) or show (true). By default, value is true.\n * @returns {void}.\n */\n Tab.prototype.hideTab = function (index, value) {\n var items;\n var item = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(item)) {\n return;\n }\n if (isNOU(value)) {\n value = true;\n }\n this.bdrLine.classList.add(CLS_HIDDEN);\n if (value === true) {\n item.classList.add(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n if (items.length !== 0 && item.classList.contains(CLS_ACTIVE)) {\n if (index !== 0) {\n for (var i = index - 1; i >= 0; i--) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.select(i);\n break;\n }\n else if (i === 0) {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n }\n else {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n else if (items.length === 0) {\n this.element.classList.add(CLS_HIDDEN);\n }\n }\n else {\n this.element.classList.remove(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n item.classList.remove(CLS_HIDDEN);\n if (items.length === 0) {\n this.select(index);\n }\n }\n this.setActiveBorder();\n if (!isNullOrUndefined(item.firstElementChild)) {\n item.firstElementChild.setAttribute('aria-hidden', '' + value);\n }\n if (this.overflowMode === 'Popup' && this.tbObj) {\n this.tbObj.refreshOverflow();\n }\n };\n Tab.prototype.selectTab = function (args, event, isInteracted) {\n if (event === void 0) { event = null; }\n if (isInteracted === void 0) { isInteracted = false; }\n this.isInteracted = isInteracted;\n this.select(args, event);\n };\n /**\n * Specifies the index or HTMLElement to select an item from the Tab.\n *\n * @param {number | HTMLElement} args - Index or DOM element is used for selecting an item from the Tab.\n * @param {Event} event - An event which takes place in DOM.\n * @returns {void}\n */\n Tab.prototype.select = function (args, event) {\n var _this = this;\n var tabHeader = this.getTabHeader();\n this.tbItems = select('.' + CLS_TB_ITEMS, tabHeader);\n this.tbItem = selectAll('.' + CLS_TB_ITEM, tabHeader);\n this.content = select('.' + CLS_CONTENT, this.element);\n this.prevItem = this.tbItem[this.prevIndex];\n if (isNOU(this.selectedItem) || (this.selectedItem < 0) || (this.tbItem.length <= this.selectedItem) || isNaN(this.selectedItem)) {\n this.selectedItem = 0;\n }\n else {\n this.selectedID = this.extIndex(this.tbItem[this.selectedItem].id);\n }\n var trg = this.tbItem[args];\n if (isNOU(trg)) {\n this.selectedID = '0';\n }\n else {\n this.selectingID = this.extIndex(trg.id);\n }\n if (!isNOU(this.prevItem) && !this.prevItem.classList.contains(CLS_DISABLE)) {\n this.prevItem.children.item(0).setAttribute('tabindex', this.prevItem.firstElementChild.getAttribute('tabindex'));\n }\n var eventArg = {\n event: event,\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: this.tbItem[this.selectedItem],\n selectedIndex: this.selectedItem,\n selectedContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectedID, this.content) : null,\n selectingItem: trg,\n selectingIndex: args,\n selectingContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content) : null,\n isSwiped: this.isSwiped,\n isInteracted: this.isInteracted,\n cancel: false\n };\n if (!this.initRender) {\n this.trigger('selecting', eventArg, function (selectArgs) {\n if (!selectArgs.cancel) {\n _this.selectingContent(args, _this.isInteracted);\n }\n });\n }\n else {\n this.selectingContent(args, this.isInteracted);\n }\n this.isInteracted = false;\n };\n Tab.prototype.selectingContent = function (args, isInteracted) {\n if (typeof args === 'number') {\n if (!isNOU(this.tbItem[args]) && (this.tbItem[args].classList.contains(CLS_DISABLE) ||\n this.tbItem[args].classList.contains(CLS_HIDDEN))) {\n for (var i = args + 1; i < this.items.length; i++) {\n if (this.items[i].disabled === false && this.items[i].visible === true) {\n args = i;\n break;\n }\n else {\n args = 0;\n }\n }\n }\n if (this.tbItem.length > args && args >= 0 && !isNaN(args)) {\n this.prevIndex = this.selectedItem;\n this.prevItem = this.tbItem[this.prevIndex];\n if (this.tbItem[args].classList.contains(CLS_TB_POPUP) && this.reorderActiveTab) {\n this.setActive(this.popupHandler(this.tbItem[args]), null, isInteracted);\n if ((!isNOU(this.items) && this.items.length > 0) && this.allowDragAndDrop) {\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var item = this.items[args];\n this.items.splice(args, 1);\n this.items.splice(this.tbItem.length - 1, 0, item);\n var itemId = this.itemIndexArray[args];\n this.itemIndexArray.splice(args, 1);\n this.itemIndexArray.splice(this.tbItem.length - 1, 0, itemId);\n }\n }\n else {\n this.setActive(args, null, isInteracted);\n }\n }\n else {\n this.setActive(0, null, isInteracted);\n }\n }\n else if (args instanceof (HTMLElement)) {\n this.setActive(this.getEleIndex(args), null, isInteracted);\n }\n };\n /**\n * Gets the item index from the Tab.\n *\n * @param {string} tabItemId - Item ID is used for getting index from the Tab.\n * @returns {number} - It returns item index.\n */\n Tab.prototype.getItemIndex = function (tabItemId) {\n var tabIndex;\n for (var i = 0; i < this.tbItem.length; i++) {\n var value = this.tbItem[i].getAttribute('data-id');\n if (tabItemId === value) {\n tabIndex = i;\n break;\n }\n }\n return tabIndex;\n };\n /**\n * Specifies the value to disable/enable the Tab component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Tab will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Tab.prototype.disable = function (value) {\n this.setCssClass(this.element, CLS_DISABLE, value);\n this.element.setAttribute('aria-disabled', '' + value);\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - It returns the persisted state.\n */\n Tab.prototype.getPersistData = function () {\n return this.addOnPersist(['selectedItem', 'actEleId']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Tab.prototype.getModuleName = function () {\n return 'tab';\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {TabModel} newProp - It contains the new value of data.\n * @param {TabModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n Tab.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyle(this.element, { width: formatUnit(newProp.width) });\n break;\n case 'height':\n setStyle(this.element, { height: formatUnit(newProp.height) });\n this.setContentHeight(false);\n break;\n case 'cssClass':\n var headerEle = this.element.querySelector('.' + CLS_HEADER);\n if (oldProp.cssClass !== '' && !isNullOrUndefined(oldProp.cssClass)) {\n this.setCssClass(this.element, oldProp.cssClass, false);\n this.setCssClass(this.element, newProp.cssClass, true);\n if (!isNullOrUndefined(headerEle)) {\n this.setCssClass(headerEle, oldProp.cssClass, false);\n this.setCssClass(headerEle, newProp.cssClass, true);\n }\n }\n else {\n this.setCssClass(this.element, newProp.cssClass, true);\n if (!isNullOrUndefined(headerEle)) {\n this.setCssClass(headerEle, newProp.cssClass, true);\n }\n }\n break;\n case 'items':\n this.evalOnPropertyChangeItems(newProp, oldProp);\n break;\n case 'showCloseButton':\n this.setCloseButton(newProp.showCloseButton);\n break;\n case 'reorderActiveTab':\n this.refreshActiveTabBorder();\n break;\n case 'selectedItem':\n this.selectedItem = oldProp.selectedItem;\n this.select(newProp.selectedItem);\n break;\n case 'headerPlacement':\n this.changeOrientation(newProp.headerPlacement);\n break;\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'overflowMode':\n this.tbObj.overflowMode = newProp.overflowMode;\n this.tbObj.dataBind();\n this.refreshActiveTabBorder();\n break;\n case 'heightAdjustMode':\n this.setContentHeight(false);\n this.select(this.selectedItem);\n break;\n case 'scrollStep':\n if (this.tbObj) {\n this.tbObj.scrollStep = this.scrollStep;\n }\n break;\n case 'allowDragAndDrop':\n this.bindDraggable();\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.draggableItems.forEach(function (item) {\n item.dragArea = _this.dragArea;\n });\n this.refresh();\n }\n break;\n }\n }\n };\n /**\n * To refresh the active tab contents.\n *\n * @returns {void}\n */\n Tab.prototype.refreshActiveTab = function () {\n if (this.isReact && this.isTemplate) {\n this.clearTemplate();\n }\n if (!this.isTemplate) {\n if (this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE)) {\n detach(this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).children[0]);\n detach(this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0]);\n var item = this.items[this.selectedItem];\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n var text = item.headerTemplate || item.header.text;\n var txtWrap = this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n if (!isNOU(text.tagName)) {\n txtWrap.appendChild(text);\n }\n else {\n this.headerTextCompile(txtWrap, text, this.selectedItem);\n }\n var tEle = void 0;\n var icon = this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tConts = this.createElement('div', { className: CLS_TEXT_WRAP });\n tConts.appendChild(txtWrap);\n if ((text !== '' && text !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tConts.insertBefore(icon, tConts.firstElementChild);\n }\n else {\n tConts.appendChild(icon);\n }\n tEle = txtWrap;\n this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrap : icon);\n if (tEle === icon) {\n detach(txtWrap);\n tConts.appendChild(icon);\n this.isIconAlone = true;\n }\n }\n var tabIndex = isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString();\n var wrapAtt = (item.disabled) ? {} : { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-selected': 'true', 'aria-disabled': 'false' };\n tConts.appendChild(this.btnCls.cloneNode(true));\n var wraper = this.createElement('div', { className: CLS_WRAP, attrs: wrapAtt });\n wraper.appendChild(tConts);\n if (pos === 'top' || pos === 'bottom') {\n this.element.classList.add('e-vertical-icon');\n }\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wraper);\n var crElem = this.createElement('div');\n var cnt = item.content;\n var eleStr = void 0;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n crElem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n crElem.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n this.element.querySelector('.' + CLS_ITEM + '.' + CLS_ACTIVE).appendChild(crElem);\n }\n }\n else {\n var tabItems = this.element.querySelector('.' + CLS_TB_ITEMS);\n var element = this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE);\n var index = this.getIndexFromEle(element.id);\n var header = element.innerText;\n var detachContent = this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0];\n var mainContents = detachContent.innerHTML;\n detach(element);\n detach(detachContent);\n var attr = {\n className: CLS_TB_ITEM + ' ' + CLS_TEMPLATE + ' ' + CLS_ACTIVE, id: CLS_ITEM + this.tabId + '_' + index\n };\n var txtString = this.createElement('span', {\n className: CLS_TEXT, innerHTML: header, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var conte = this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txtString + this.btnCls.outerHTML\n }).outerHTML;\n var tabIndex = element.firstElementChild.getAttribute('data-tabindex');\n var wrap = this.createElement('div', {\n className: CLS_WRAP, innerHTML: conte,\n attrs: { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-controls': CLS_CONTENT + this.tabId + '_' + index, 'aria-selected': 'true', 'aria-disabled': 'false' }\n });\n tabItems.insertBefore(this.createElement('div', attr), tabItems.children[index + 1]);\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wrap);\n var crElem = this.createElement('div', { innerHTML: mainContents });\n this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).appendChild(crElem);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * To refresh the active tab indicator.\n *\n * @returns {void}\n */\n Tab.prototype.refreshActiveTabBorder = function () {\n var activeEle = select('.' + CLS_TB_ITEM + '.' + CLS_TB_POPUP + '.' + CLS_ACTIVE, this.element);\n if (!isNOU(activeEle) && this.reorderActiveTab) {\n this.select(this.getEleIndex(activeEle));\n }\n this.refreshActiveBorder();\n };\n __decorate([\n Collection([], TabItem)\n ], Tab.prototype, \"items\", void 0);\n __decorate([\n Property('100%')\n ], Tab.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tab.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Tab.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], Tab.prototype, \"selectedItem\", void 0);\n __decorate([\n Property('Top')\n ], Tab.prototype, \"headerPlacement\", void 0);\n __decorate([\n Property('Content')\n ], Tab.prototype, \"heightAdjustMode\", void 0);\n __decorate([\n Property('Scrollable')\n ], Tab.prototype, \"overflowMode\", void 0);\n __decorate([\n Property('Dynamic')\n ], Tab.prototype, \"loadOn\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"showCloseButton\", void 0);\n __decorate([\n Property(true)\n ], Tab.prototype, \"reorderActiveTab\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"scrollStep\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"dragArea\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], Tab.prototype, \"clearTemplates\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Tab.prototype, \"animation\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"adding\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"added\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selecting\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"onDragStart\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"dragging\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"dragged\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"destroyed\", void 0);\n Tab = __decorate([\n NotifyPropertyChanges\n ], Tab);\n return Tab;\n}(Component));\nexport { Tab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Tab } from '@syncfusion/ej2-navigations';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Tab Component.\n * ```html\n * \n * ```\n */\nvar TabComponent = /** @class */ (function (_super) {\n __extends(TabComponent, _super);\n function TabComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'tabItems': 'tabItem' };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n TabComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return TabComponent;\n}(Tab));\nexport { TabComponent };\napplyMixins(TabComponent, [ComponentBase, React.Component]);\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","/**\n * Exports a boolean value reporting whether is client side or server side by checking on the window object\n */\nconst isClient = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport default isClient;\n","/**\n * Exports a boolean value reporting whether the given API is supported or not\n */\nconst isApiSupported = (api) => (typeof window !== 'undefined' ? api in window : false);\nexport default isApiSupported;\n","const cache = new Map();\n/**\n * A tiny wrapper around console.warn that makes sure the message is only displayed once.\n * Used mainly to avoid polluting server side logs\n * @param message\n */\nconst warnOnce = (message) => {\n if (cache.has(message))\n return;\n cache.set(message, true);\n // eslint-disable-next-line no-console\n console.warn(message);\n};\nexport default warnOnce;\n","import { useEffect, useState } from 'react';\nimport isClient from './shared/isClient';\nimport isAPISupported from './shared/isAPISupported';\nimport warnOnce from './shared/warnOnce';\nconst errorMessage = 'matchMedia is not supported, this could happen both because window.matchMedia is not supported by' +\n ' your current browser or you\\'re using the useMediaQuery hook whilst server side rendering.';\n/**\n * Accepts a media query string then uses the\n * [window.matchMedia](https://developer.mozilla.org/en-US/docs/Web/API/Window/matchMedia) API to determine if it\n * matches with the current document.
    \n * It also monitor the document changes to detect when it matches or stops matching the media query.
    \n * Returns the validity state of the given media query.\n *\n */\nconst useMediaQuery = (mediaQuery) => {\n if (!isClient || !isAPISupported('matchMedia')) {\n warnOnce(errorMessage);\n return false;\n }\n const [isVerified, setIsVerified] = useState(!!window.matchMedia(mediaQuery).matches);\n useEffect(() => {\n const mediaQueryList = window.matchMedia(mediaQuery);\n const documentChangeHandler = () => { setIsVerified(!!mediaQueryList.matches); };\n try {\n mediaQueryList.addEventListener('change', documentChangeHandler);\n }\n catch (e) {\n // Safari isn't supporting mediaQueryList.addEventListener\n mediaQueryList.addListener(documentChangeHandler);\n }\n documentChangeHandler();\n return () => {\n try {\n mediaQueryList.removeEventListener('change', documentChangeHandler);\n }\n catch (e) {\n // Safari isn't supporting mediaQueryList.removeEventListener\n mediaQueryList.removeListener(documentChangeHandler);\n }\n };\n }, [mediaQuery]);\n return isVerified;\n};\nexport default useMediaQuery;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\nvar pairSplitRegExp = /; */;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(pairSplitRegExp);\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var eq_idx = pair.indexOf('=');\n\n // skip things that don't look like key=value\n if (eq_idx < 0) {\n continue;\n }\n\n var key = pair.substr(0, eq_idx).trim()\n var val = pair.substr(++eq_idx, pair.length).trim();\n\n // quoted values\n if ('\"' == val[0]) {\n val = val.slice(1, -1);\n }\n\n // only assign once\n if (undefined == obj[key]) {\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n if (isNaN(maxAge)) throw new Error('maxAge should be a Number');\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\n// -- Inlined from fbjs --\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n Object.freeze(emptyObject);\n}\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction _invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nvar warning = function(){};\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\n// /-- Inlined from fbjs --\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (process.env.NODE_ENV !== 'production') {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n} else {\n ReactPropTypeLocationNames = {};\n}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n /**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n var injectedMixins = [];\n\n /**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return
    Hello World
    ;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\n var ReactClassInterface = {\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return
    Hello, {name}!
    ;\n * }\n *\n * @return {ReactComponent}\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillMount`.\n *\n * @optional\n */\n UNSAFE_componentWillMount: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillReceiveProps`.\n *\n * @optional\n */\n UNSAFE_componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillUpdate`.\n *\n * @optional\n */\n UNSAFE_componentWillUpdate: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n };\n\n /**\n * Similar to ReactClassInterface but for static methods.\n */\n var ReactClassStaticInterface = {\n /**\n * This method is invoked after a component is instantiated and when it\n * receives new props. Return an object to update state in response to\n * prop changes. Return null to indicate no change to state.\n *\n * If an object is returned, its keys will be merged into the existing state.\n *\n * @return {object || null}\n * @optional\n */\n getDerivedStateFromProps: 'DEFINE_MANY_MERGED'\n };\n\n /**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\n var RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function() {}\n };\n\n function validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an _invariant so components\n // don't show up in prod but only in __DEV__\n if (process.env.NODE_ENV !== 'production') {\n warning(\n typeof typeDef[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactClass',\n ReactPropTypeLocationNames[location],\n propName\n );\n }\n }\n }\n }\n\n function validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name)\n ? ReactClassInterface[name]\n : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n _invariant(\n specPolicy === 'OVERRIDE_BASE',\n 'ReactClassInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n );\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n _invariant(\n specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClassInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n );\n }\n }\n\n /**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\n function mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (process.env.NODE_ENV !== 'production') {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n isMixinValid,\n \"%s: You're attempting to include a mixin that is either null \" +\n 'or not an object. Check the mixins included by the component, ' +\n 'as well as any mixins they include themselves. ' +\n 'Expected object but got %s.',\n Constructor.displayName || 'ReactClass',\n spec === null ? null : typeofSpec\n );\n }\n }\n\n return;\n }\n\n _invariant(\n typeof spec !== 'function',\n \"ReactClass: You're attempting to \" +\n 'use a component class or function as a mixin. Instead, just use a ' +\n 'regular object.'\n );\n _invariant(\n !isValidElement(spec),\n \"ReactClass: You're attempting to \" +\n 'use a component as a mixin. Instead, just use a regular object.'\n );\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isReactClassMethod &&\n !isAlreadyDefined &&\n spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n _invariant(\n isReactClassMethod &&\n (specPolicy === 'DEFINE_MANY_MERGED' ||\n specPolicy === 'DEFINE_MANY'),\n 'ReactClass: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n );\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (process.env.NODE_ENV !== 'production') {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n }\n\n function mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n _invariant(\n !isReserved,\n 'ReactClass: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n );\n\n var isAlreadyDefined = name in Constructor;\n if (isAlreadyDefined) {\n var specPolicy = ReactClassStaticInterface.hasOwnProperty(name)\n ? ReactClassStaticInterface[name]\n : null;\n\n _invariant(\n specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClass: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n );\n\n Constructor[name] = createMergedResultFunction(Constructor[name], property);\n\n return;\n }\n\n Constructor[name] = property;\n }\n }\n\n /**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\n function mergeIntoWithNoDuplicateKeys(one, two) {\n _invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n );\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n _invariant(\n one[key] === undefined,\n 'mergeIntoWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n );\n one[key] = two[key];\n }\n }\n return one;\n }\n\n /**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n }\n\n /**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n }\n\n /**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\n function bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (process.env.NODE_ENV !== 'production') {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function(newThis) {\n for (\n var _len = arguments.length,\n args = Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See %s',\n componentName\n );\n }\n } else if (!args.length) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See %s',\n componentName\n );\n }\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n }\n\n /**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\n function bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n }\n\n var IsMountedPreMixin = {\n componentDidMount: function() {\n this.__isMounted = true;\n }\n };\n\n var IsMountedPostMixin = {\n componentWillUnmount: function() {\n this.__isMounted = false;\n }\n };\n\n /**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\n var ReactClassMixin = {\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function(newState, callback) {\n this.updater.enqueueReplaceState(this, newState, callback);\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this.__didWarnIsMounted,\n '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n 'subscriptions and pending requests in componentWillUnmount to ' +\n 'prevent memory leaks.',\n (this.constructor && this.constructor.displayName) ||\n this.name ||\n 'Component'\n );\n this.__didWarnIsMounted = true;\n }\n return !!this.__isMounted;\n }\n };\n\n var ReactClassComponent = function() {};\n _assign(\n ReactClassComponent.prototype,\n ReactComponent.prototype,\n ReactClassMixin\n );\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n function createClass(spec) {\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function(props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this instanceof Constructor,\n 'Something is calling a React component directly. Use a factory or ' +\n 'JSX instead. See: https://fb.me/react-legacyfactory'\n );\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (\n initialState === undefined &&\n this.getInitialState._isMockFunction\n ) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n _invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.getInitialState(): must return an object or null',\n Constructor.displayName || 'ReactCompositeComponent'\n );\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n mixSpecIntoComponent(Constructor, spec);\n mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n _invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n );\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n !Constructor.prototype.componentShouldUpdate,\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.componentWillRecieveProps,\n '%s has a method called ' +\n 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.UNSAFE_componentWillRecieveProps,\n '%s has a method called UNSAFE_componentWillRecieveProps(). ' +\n 'Did you mean UNSAFE_componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n }\n\n return createClass;\n}\n\nmodule.exports = factory;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar React = require('react');\nvar factory = require('./factory');\n\nif (typeof React === 'undefined') {\n throw Error(\n 'create-react-class could not find the React object. If you are using script tags, ' +\n 'make sure that React is being loaded before create-react-class.'\n );\n}\n\n// Hack to grab NoopUpdateQueue from isomorphic React\nvar ReactNoopUpdateQueue = new React.Component().updater;\n\nmodule.exports = factory(\n React.Component,\n React.isValidElement,\n ReactNoopUpdateQueue\n);\n","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n","var isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tObject.keys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tObject.keys(source).forEach(function(key) {\n\t\tif (!options.isMergeableObject(source[key]) || !target[key]) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = deepmerge(target[key], source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nexport default deepmerge_1;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import arrayMap from './_arrayMap.js';\nimport copyArray from './_copyArray.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\nimport stringToPath from './_stringToPath.js';\nimport toKey from './_toKey.js';\nimport toString from './toString.js';\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nexport default toPath;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","import * as React from 'react';\nimport { FormikContextType } from './types';\nimport invariant from 'tiny-warning';\n\nexport const FormikContext = React.createContext>(\n undefined as any\n);\nFormikContext.displayName = 'FormikContext';\n\nexport const FormikProvider = FormikContext.Provider;\nexport const FormikConsumer = FormikContext.Consumer;\n\nexport function useFormikContext() {\n const formik = React.useContext>(FormikContext);\n\n invariant(\n !!formik,\n `Formik context is undefined, please verify you are calling useFormikContext() as child of a component.`\n );\n\n return formik;\n}\n","import clone from 'lodash/clone';\nimport toPath from 'lodash/toPath';\nimport * as React from 'react';\n\n// Assertions\n\n/** @private is the value an empty array? */\nexport const isEmptyArray = (value?: any) =>\n Array.isArray(value) && value.length === 0;\n\n/** @private is the given object a Function? */\nexport const isFunction = (obj: any): obj is Function =>\n typeof obj === 'function';\n\n/** @private is the given object an Object? */\nexport const isObject = (obj: any): obj is Object =>\n obj !== null && typeof obj === 'object';\n\n/** @private is the given object an integer? */\nexport const isInteger = (obj: any): boolean =>\n String(Math.floor(Number(obj))) === obj;\n\n/** @private is the given object a string? */\nexport const isString = (obj: any): obj is string =>\n Object.prototype.toString.call(obj) === '[object String]';\n\n/** @private is the given object a NaN? */\n// eslint-disable-next-line no-self-compare\nexport const isNaN = (obj: any): boolean => obj !== obj;\n\n/** @private Does a React component have exactly 0 children? */\nexport const isEmptyChildren = (children: any): boolean =>\n React.Children.count(children) === 0;\n\n/** @private is the given object/value a promise? */\nexport const isPromise = (value: any): value is PromiseLike =>\n isObject(value) && isFunction(value.then);\n\n/** @private is the given object/value a type of synthetic event? */\nexport const isInputEvent = (value: any): value is React.SyntheticEvent =>\n value && isObject(value) && isObject(value.target);\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?Document} doc Defaults to current document.\n * @return {Element | null}\n * @see https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/dom/getActiveElement.js\n */\nexport function getActiveElement(doc?: Document): Element | null {\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n if (typeof doc === 'undefined') {\n return null;\n }\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\n/**\n * Deeply get a value from an object via its path.\n */\nexport function getIn(\n obj: any,\n key: string | string[],\n def?: any,\n p: number = 0\n) {\n const path = toPath(key);\n while (obj && p < path.length) {\n obj = obj[path[p++]];\n }\n\n // check if path is not in the end\n if (p !== path.length && !obj) {\n return def;\n }\n\n return obj === undefined ? def : obj;\n}\n\n/**\n * Deeply set a value from in object via it's path. If the value at `path`\n * has changed, return a shallow copy of obj with `value` set at `path`.\n * If `value` has not changed, return the original `obj`.\n *\n * Existing objects / arrays along `path` are also shallow copied. Sibling\n * objects along path retain the same internal js reference. Since new\n * objects / arrays are only created along `path`, we can test if anything\n * changed in a nested structure by comparing the object's reference in\n * the old and new object, similar to how russian doll cache invalidation\n * works.\n *\n * In earlier versions of this function, which used cloneDeep, there were\n * issues whereby settings a nested value would mutate the parent\n * instead of creating a new object. `clone` avoids that bug making a\n * shallow copy of the objects along the update path\n * so no object is mutated in place.\n *\n * Before changing this function, please read through the following\n * discussions.\n *\n * @see https://github.com/developit/linkstate\n * @see https://github.com/jaredpalmer/formik/pull/123\n */\nexport function setIn(obj: any, path: string, value: any): any {\n let res: any = clone(obj); // this keeps inheritance when obj is a class\n let resVal: any = res;\n let i = 0;\n let pathArray = toPath(path);\n\n for (; i < pathArray.length - 1; i++) {\n const currentPath: string = pathArray[i];\n let currentObj: any = getIn(obj, pathArray.slice(0, i + 1));\n\n if (currentObj && (isObject(currentObj) || Array.isArray(currentObj))) {\n resVal = resVal[currentPath] = clone(currentObj);\n } else {\n const nextPath: string = pathArray[i + 1];\n resVal = resVal[currentPath] =\n isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};\n }\n }\n\n // Return original object if new value is the same as current\n if ((i === 0 ? obj : resVal)[pathArray[i]] === value) {\n return obj;\n }\n\n if (value === undefined) {\n delete resVal[pathArray[i]];\n } else {\n resVal[pathArray[i]] = value;\n }\n\n // If the path array has a single element, the loop did not run.\n // Deleting on `resVal` had no effect in this scenario, so we delete on the result instead.\n if (i === 0 && value === undefined) {\n delete res[pathArray[i]];\n }\n\n return res;\n}\n\n/**\n * Recursively a set the same value for all keys and arrays nested object, cloning\n * @param object\n * @param value\n * @param visited\n * @param response\n */\nexport function setNestedObjectValues(\n object: any,\n value: any,\n visited: any = new WeakMap(),\n response: any = {}\n): T {\n for (let k of Object.keys(object)) {\n const val = object[k];\n if (isObject(val)) {\n if (!visited.get(val)) {\n visited.set(val, true);\n // In order to keep array values consistent for both dot path and\n // bracket syntax, we need to check if this is an array so that\n // this will output { friends: [true] } and not { friends: { \"0\": true } }\n response[k] = Array.isArray(val) ? [] : {};\n setNestedObjectValues(val, value, visited, response[k]);\n }\n } else {\n response[k] = value;\n }\n }\n\n return response;\n}\n","import deepmerge from 'deepmerge';\nimport isPlainObject from 'lodash/isPlainObject';\nimport * as React from 'react';\nimport isEqual from 'react-fast-compare';\nimport invariant from 'tiny-warning';\nimport { FieldConfig } from './Field';\nimport { FormikProvider } from './FormikContext';\nimport {\n FieldHelperProps,\n FieldInputProps,\n FieldMetaProps,\n FormikConfig,\n FormikErrors,\n FormikHandlers,\n FormikHelpers,\n FormikProps,\n FormikState,\n FormikTouched,\n FormikValues,\n} from './types';\nimport {\n getActiveElement,\n getIn,\n isEmptyChildren,\n isFunction,\n isObject,\n isPromise,\n isString,\n setIn,\n setNestedObjectValues,\n} from './utils';\n\ntype FormikMessage =\n | { type: 'SUBMIT_ATTEMPT' }\n | { type: 'SUBMIT_FAILURE' }\n | { type: 'SUBMIT_SUCCESS' }\n | { type: 'SET_ISVALIDATING'; payload: boolean }\n | { type: 'SET_ISSUBMITTING'; payload: boolean }\n | { type: 'SET_VALUES'; payload: Values }\n | { type: 'SET_FIELD_VALUE'; payload: { field: string; value?: any } }\n | { type: 'SET_FIELD_TOUCHED'; payload: { field: string; value?: boolean } }\n | { type: 'SET_FIELD_ERROR'; payload: { field: string; value?: string } }\n | { type: 'SET_TOUCHED'; payload: FormikTouched }\n | { type: 'SET_ERRORS'; payload: FormikErrors }\n | { type: 'SET_STATUS'; payload: any }\n | {\n type: 'SET_FORMIK_STATE';\n payload: (s: FormikState) => FormikState;\n }\n | {\n type: 'RESET_FORM';\n payload: FormikState;\n };\n\n// State reducer\nfunction formikReducer(\n state: FormikState,\n msg: FormikMessage\n) {\n switch (msg.type) {\n case 'SET_VALUES':\n return { ...state, values: msg.payload };\n case 'SET_TOUCHED':\n return { ...state, touched: msg.payload };\n case 'SET_ERRORS':\n if (isEqual(state.errors, msg.payload)) {\n return state;\n }\n\n return { ...state, errors: msg.payload };\n case 'SET_STATUS':\n return { ...state, status: msg.payload };\n case 'SET_ISSUBMITTING':\n return { ...state, isSubmitting: msg.payload };\n case 'SET_ISVALIDATING':\n return { ...state, isValidating: msg.payload };\n case 'SET_FIELD_VALUE':\n return {\n ...state,\n values: setIn(state.values, msg.payload.field, msg.payload.value),\n };\n case 'SET_FIELD_TOUCHED':\n return {\n ...state,\n touched: setIn(state.touched, msg.payload.field, msg.payload.value),\n };\n case 'SET_FIELD_ERROR':\n return {\n ...state,\n errors: setIn(state.errors, msg.payload.field, msg.payload.value),\n };\n case 'RESET_FORM':\n return { ...state, ...msg.payload };\n case 'SET_FORMIK_STATE':\n return msg.payload(state);\n case 'SUBMIT_ATTEMPT':\n return {\n ...state,\n touched: setNestedObjectValues>(\n state.values,\n true\n ),\n isSubmitting: true,\n submitCount: state.submitCount + 1,\n };\n case 'SUBMIT_FAILURE':\n return {\n ...state,\n isSubmitting: false,\n };\n case 'SUBMIT_SUCCESS':\n return {\n ...state,\n isSubmitting: false,\n };\n default:\n return state;\n }\n}\n\n// Initial empty states // objects\nconst emptyErrors: FormikErrors = {};\nconst emptyTouched: FormikTouched = {};\n\n// This is an object that contains a map of all registered fields\n// and their validate functions\ninterface FieldRegistry {\n [field: string]: {\n validate: (value: any) => string | Promise | undefined;\n };\n}\n\nexport function useFormik({\n validateOnChange = true,\n validateOnBlur = true,\n validateOnMount = false,\n isInitialValid,\n enableReinitialize = false,\n onSubmit,\n ...rest\n}: FormikConfig) {\n const props = {\n validateOnChange,\n validateOnBlur,\n validateOnMount,\n onSubmit,\n ...rest,\n };\n const initialValues = React.useRef(props.initialValues);\n const initialErrors = React.useRef(props.initialErrors || emptyErrors);\n const initialTouched = React.useRef(props.initialTouched || emptyTouched);\n const initialStatus = React.useRef(props.initialStatus);\n const isMounted = React.useRef(false);\n const fieldRegistry = React.useRef({});\n if (__DEV__) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n invariant(\n typeof isInitialValid === 'undefined',\n 'isInitialValid has been deprecated and will be removed in future versions of Formik. Please use initialErrors or validateOnMount instead.'\n );\n // eslint-disable-next-line\n }, []);\n }\n\n React.useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n const [, setIteration] = React.useState(0);\n const stateRef = React.useRef>({\n values: props.initialValues,\n errors: props.initialErrors || emptyErrors,\n touched: props.initialTouched || emptyTouched,\n status: props.initialStatus,\n isSubmitting: false,\n isValidating: false,\n submitCount: 0,\n });\n\n const state = stateRef.current;\n\n const dispatch = React.useCallback((action: FormikMessage) => {\n const prev = stateRef.current;\n\n stateRef.current = formikReducer(prev, action);\n\n // force rerender\n if (prev !== stateRef.current) setIteration(x => x + 1);\n }, []);\n\n const runValidateHandler = React.useCallback(\n (values: Values, field?: string): Promise> => {\n return new Promise((resolve, reject) => {\n const maybePromisedErrors = (props.validate as any)(values, field);\n if (maybePromisedErrors == null) {\n // use loose null check here on purpose\n resolve(emptyErrors);\n } else if (isPromise(maybePromisedErrors)) {\n (maybePromisedErrors as Promise).then(\n errors => {\n resolve(errors || emptyErrors);\n },\n actualException => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in `,\n actualException\n );\n }\n\n reject(actualException);\n }\n );\n } else {\n resolve(maybePromisedErrors);\n }\n });\n },\n [props.validate]\n );\n\n /**\n * Run validation against a Yup schema and optionally run a function if successful\n */\n const runValidationSchema = React.useCallback(\n (values: Values, field?: string): Promise> => {\n const validationSchema = props.validationSchema;\n const schema = isFunction(validationSchema)\n ? validationSchema(field)\n : validationSchema;\n const promise =\n field && schema.validateAt\n ? schema.validateAt(field, values)\n : validateYupSchema(values, schema);\n return new Promise((resolve, reject) => {\n promise.then(\n () => {\n resolve(emptyErrors);\n },\n (err: any) => {\n // Yup will throw a validation error if validation fails. We catch those and\n // resolve them into Formik errors. We can sniff if something is a Yup error\n // by checking error.name.\n // @see https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\n if (err.name === 'ValidationError') {\n resolve(yupToFormErrors(err));\n } else {\n // We throw any other errors\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in `,\n err\n );\n }\n\n reject(err);\n }\n }\n );\n });\n },\n [props.validationSchema]\n );\n\n const runSingleFieldLevelValidation = React.useCallback(\n (field: string, value: void | string): Promise => {\n return new Promise(resolve =>\n resolve(fieldRegistry.current[field].validate(value) as string)\n );\n },\n []\n );\n\n const runFieldLevelValidations = React.useCallback(\n (values: Values): Promise> => {\n const fieldKeysWithValidation: string[] = Object.keys(\n fieldRegistry.current\n ).filter(f => isFunction(fieldRegistry.current[f].validate));\n\n // Construct an array with all of the field validation functions\n const fieldValidations: Promise[] =\n fieldKeysWithValidation.length > 0\n ? fieldKeysWithValidation.map(f =>\n runSingleFieldLevelValidation(f, getIn(values, f))\n )\n : [Promise.resolve('DO_NOT_DELETE_YOU_WILL_BE_FIRED')]; // use special case ;)\n\n return Promise.all(fieldValidations).then((fieldErrorsList: string[]) =>\n fieldErrorsList.reduce((prev, curr, index) => {\n if (curr === 'DO_NOT_DELETE_YOU_WILL_BE_FIRED') {\n return prev;\n }\n if (curr) {\n prev = setIn(prev, fieldKeysWithValidation[index], curr);\n }\n return prev;\n }, {})\n );\n },\n [runSingleFieldLevelValidation]\n );\n\n // Run all validations and return the result\n const runAllValidations = React.useCallback(\n (values: Values) => {\n return Promise.all([\n runFieldLevelValidations(values),\n props.validationSchema ? runValidationSchema(values) : {},\n props.validate ? runValidateHandler(values) : {},\n ]).then(([fieldErrors, schemaErrors, validateErrors]) => {\n const combinedErrors = deepmerge.all>(\n [fieldErrors, schemaErrors, validateErrors],\n { arrayMerge }\n );\n return combinedErrors;\n });\n },\n [\n props.validate,\n props.validationSchema,\n runFieldLevelValidations,\n runValidateHandler,\n runValidationSchema,\n ]\n );\n\n // Run all validations methods and update state accordingly\n const validateFormWithHighPriority = useEventCallback(\n (values: Values = state.values) => {\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return runAllValidations(values).then(combinedErrors => {\n if (!!isMounted.current) {\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n dispatch({ type: 'SET_ERRORS', payload: combinedErrors });\n }\n return combinedErrors;\n });\n }\n );\n\n React.useEffect(() => {\n if (\n validateOnMount &&\n isMounted.current === true &&\n isEqual(initialValues.current, props.initialValues)\n ) {\n validateFormWithHighPriority(initialValues.current);\n }\n }, [validateOnMount, validateFormWithHighPriority]);\n\n const resetForm = React.useCallback(\n (nextState?: Partial>) => {\n const values =\n nextState && nextState.values\n ? nextState.values\n : initialValues.current;\n const errors =\n nextState && nextState.errors\n ? nextState.errors\n : initialErrors.current\n ? initialErrors.current\n : props.initialErrors || {};\n const touched =\n nextState && nextState.touched\n ? nextState.touched\n : initialTouched.current\n ? initialTouched.current\n : props.initialTouched || {};\n const status =\n nextState && nextState.status\n ? nextState.status\n : initialStatus.current\n ? initialStatus.current\n : props.initialStatus;\n initialValues.current = values;\n initialErrors.current = errors;\n initialTouched.current = touched;\n initialStatus.current = status;\n\n const dispatchFn = () => {\n dispatch({\n type: 'RESET_FORM',\n payload: {\n isSubmitting: !!nextState && !!nextState.isSubmitting,\n errors,\n touched,\n status,\n values,\n isValidating: !!nextState && !!nextState.isValidating,\n submitCount:\n !!nextState &&\n !!nextState.submitCount &&\n typeof nextState.submitCount === 'number'\n ? nextState.submitCount\n : 0,\n },\n });\n };\n\n if (props.onReset) {\n const maybePromisedOnReset = (props.onReset as any)(\n state.values,\n imperativeMethods\n );\n\n if (isPromise(maybePromisedOnReset)) {\n (maybePromisedOnReset as Promise).then(dispatchFn);\n } else {\n dispatchFn();\n }\n } else {\n dispatchFn();\n }\n },\n [props.initialErrors, props.initialStatus, props.initialTouched, props.onReset]\n );\n\n React.useEffect(() => {\n if (\n isMounted.current === true &&\n !isEqual(initialValues.current, props.initialValues)\n ) {\n if (enableReinitialize) {\n initialValues.current = props.initialValues;\n resetForm();\n if (validateOnMount) {\n validateFormWithHighPriority(initialValues.current);\n }\n }\n }\n }, [\n enableReinitialize,\n props.initialValues,\n resetForm,\n validateOnMount,\n validateFormWithHighPriority,\n ]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialErrors.current, props.initialErrors)\n ) {\n initialErrors.current = props.initialErrors || emptyErrors;\n dispatch({\n type: 'SET_ERRORS',\n payload: props.initialErrors || emptyErrors,\n });\n }\n }, [enableReinitialize, props.initialErrors]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialTouched.current, props.initialTouched)\n ) {\n initialTouched.current = props.initialTouched || emptyTouched;\n dispatch({\n type: 'SET_TOUCHED',\n payload: props.initialTouched || emptyTouched,\n });\n }\n }, [enableReinitialize, props.initialTouched]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialStatus.current, props.initialStatus)\n ) {\n initialStatus.current = props.initialStatus;\n dispatch({\n type: 'SET_STATUS',\n payload: props.initialStatus,\n });\n }\n }, [enableReinitialize, props.initialStatus, props.initialTouched]);\n\n const validateField = useEventCallback((name: string) => {\n // This will efficiently validate a single field by avoiding state\n // changes if the validation function is synchronous. It's different from\n // what is called when using validateForm.\n\n if (\n fieldRegistry.current[name] &&\n isFunction(fieldRegistry.current[name].validate)\n ) {\n const value = getIn(state.values, name);\n const maybePromise = fieldRegistry.current[name].validate(value);\n if (isPromise(maybePromise)) {\n // Only flip isValidating if the function is async.\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return maybePromise\n .then((x: any) => x)\n .then((error: string) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field: name, value: error },\n });\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n });\n } else {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: {\n field: name,\n value: maybePromise as string | undefined,\n },\n });\n return Promise.resolve(maybePromise as string | undefined);\n }\n } else if (props.validationSchema) {\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return runValidationSchema(state.values, name)\n .then((x: any) => x)\n .then((error: any) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field: name, value: getIn(error, name) },\n });\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n });\n }\n\n return Promise.resolve();\n });\n\n const registerField = React.useCallback((name: string, { validate }: any) => {\n fieldRegistry.current[name] = {\n validate,\n };\n }, []);\n\n const unregisterField = React.useCallback((name: string) => {\n delete fieldRegistry.current[name];\n }, []);\n\n const setTouched = useEventCallback(\n (touched: FormikTouched, shouldValidate?: boolean) => {\n dispatch({ type: 'SET_TOUCHED', payload: touched });\n const willValidate =\n shouldValidate === undefined ? validateOnBlur : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(state.values)\n : Promise.resolve();\n }\n );\n\n const setErrors = React.useCallback((errors: FormikErrors) => {\n dispatch({ type: 'SET_ERRORS', payload: errors });\n }, []);\n\n const setValues = useEventCallback(\n (values: React.SetStateAction, shouldValidate?: boolean) => {\n const resolvedValues = isFunction(values) ? values(state.values) : values;\n\n dispatch({ type: 'SET_VALUES', payload: resolvedValues });\n const willValidate =\n shouldValidate === undefined ? validateOnChange : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(resolvedValues)\n : Promise.resolve();\n }\n );\n\n const setFieldError = React.useCallback(\n (field: string, value: string | undefined) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field, value },\n });\n },\n []\n );\n\n const setFieldValue = useEventCallback(\n (field: string, value: any, shouldValidate?: boolean) => {\n dispatch({\n type: 'SET_FIELD_VALUE',\n payload: {\n field,\n value,\n },\n });\n const willValidate =\n shouldValidate === undefined ? validateOnChange : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(setIn(state.values, field, value))\n : Promise.resolve();\n }\n );\n\n const executeChange = React.useCallback(\n (eventOrTextValue: string | React.ChangeEvent, maybePath?: string) => {\n // By default, assume that the first argument is a string. This allows us to use\n // handleChange with React Native and React Native Web's onChangeText prop which\n // provides just the value of the input.\n let field = maybePath;\n let val = eventOrTextValue;\n let parsed;\n // If the first argument is not a string though, it has to be a synthetic React Event (or a fake one),\n // so we handle like we would a normal HTML change event.\n if (!isString(eventOrTextValue)) {\n // If we can, persist the event\n // @see https://reactjs.org/docs/events.html#event-pooling\n if ((eventOrTextValue as any).persist) {\n (eventOrTextValue as React.ChangeEvent).persist();\n }\n const target = eventOrTextValue.target\n ? (eventOrTextValue as React.ChangeEvent).target\n : (eventOrTextValue as React.ChangeEvent).currentTarget;\n\n const {\n type,\n name,\n id,\n value,\n checked,\n outerHTML,\n options,\n multiple,\n } = target;\n\n field = maybePath ? maybePath : name ? name : id;\n if (!field && __DEV__) {\n warnAboutMissingIdentifier({\n htmlContent: outerHTML,\n documentationAnchorLink: 'handlechange-e-reactchangeeventany--void',\n handlerName: 'handleChange',\n });\n }\n val = /number|range/.test(type)\n ? ((parsed = parseFloat(value)), isNaN(parsed) ? '' : parsed)\n : /checkbox/.test(type) // checkboxes\n ? getValueForCheckbox(getIn(state.values, field!), checked, value)\n : options && multiple // \" +\n\t\t\t\"\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
    \" ],\n\tcol: [ 2, \"\", \"
    \" ],\n\ttr: [ 2, \"\", \"
    \" ],\n\ttd: [ 3, \"\", \"
    \" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Re-enable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is `display: block`\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"